adwarp

Start with 1 prompt

Paste it into Claude Code, Codex or Cursor. Your agent installs Adwarp, walks you through your LinkedIn app and checks the connection.

setup prompt
Set up Adwarp for me. It's the open-source ad agent for LinkedIn Ads and Google Ads: https://github.com/adwarp-dev/adwarp

1. Check that Node.js 20 or newer is installed.
2. Walk me through creating my own LinkedIn developer app with the Advertising API product: https://github.com/adwarp-dev/adwarp/blob/main/docs/linkedin-app.md
3. Save the app's client ID and secret to ~/.adwarp/config.json as clientId and clientSecret.
4. Run "npx -y adwarp auth login" and wait while I approve access in my browser.
5. Add Adwarp to the AI client I'm using right now as an MCP server that runs "npx -y adwarp mcp". In Claude Code that's: claude mcp add adwarp -- npx -y adwarp mcp
6. Check the connection by listing my ad accounts, then save the one I pick as defaultAccountId in ~/.adwarp/config.json.

Don't create or change anything in my ad accounts during setup. LinkedIn campaigns start as drafts, so nothing spends until I turn it on.
adwarp
GitHub

Start with 1 prompt

Paste it into Claude Code, Codex or Cursor. Your agent installs Adwarp, walks you through your LinkedIn app and checks the connection.

setup prompt
Set up Adwarp for me. It's the open-source ad agent for LinkedIn Ads and Google Ads: https://github.com/adwarp-dev/adwarp

1. Check that Node.js 20 or newer is installed.
2. Walk me through creating my own LinkedIn developer app with the Advertising API product: https://github.com/adwarp-dev/adwarp/blob/main/docs/linkedin-app.md
3. Save the app's client ID and secret to ~/.adwarp/config.json as clientId and clientSecret.
4. Run "npx -y adwarp auth login" and wait while I approve access in my browser.
5. Add Adwarp to the AI client I'm using right now as an MCP server that runs "npx -y adwarp mcp". In Claude Code that's: claude mcp add adwarp -- npx -y adwarp mcp
6. Check the connection by listing my ad accounts, then save the one I pick as defaultAccountId in ~/.adwarp/config.json.

Don't create or change anything in my ad accounts during setup. LinkedIn campaigns start as drafts, so nothing spends until I turn it on.

What's a good CTR for LinkedIn ads, and when to pause one

Median click-through rates by format with their sources and dates, the sample size a rate needs, a calculator to check your own ad, and a pause rule you can copy.

By Updated 13 min read

A good click-through rate (CTR) for a LinkedIn single image ad is 0.42% or higher, the median in ZenABM's 2025 data on 161,256 ads, and the often-quoted 0.44% to 0.65% is a blended feed range (theb2bhouse, updated 2025-12-19). Format moves the bar from a 2.68% median for thought leader ads to 0.24% for video, so compare an ad with its own format, and only after about 1,500 impressions.

Every benchmark below was checked on 2026-11-07 and carries its source and date.

What's a good CTR for LinkedIn ads?

For a single image ad, 0.42% puts you at ZenABM's median, and 0.56% matches the single image average theb2bhouse publishes. Thought leader ads need their own yardstick. Their median in ZenABM's data is 2.68%, more than 6 times the single image figure, so a 1.2% that would look excellent on a single image ad is below par for a thought leader post.

Fig. 01At ZenABM's 0.42% single image median (2025 data), 1,000 impressions bring about 4 chargeable clicks, so 1 click more or less moves the rate by 0.10 points.

LinkedIn defines click-through rate as chargeable clicks divided by impressions (LinkedIn Help, Performance metrics in Campaign Manager, updated October 2026). It counts "total chargeable clicks based on your ad set's objective", and message and conversation clicks aren't chargeable under any objective. An engagement ad set and a website visits ad set are counting different events, so filter Campaign Manager to 1 objective and 1 format before you hold your number up against a table.

Fig. 02In a website visits ad set, a single image ad's chargeable clicks are the ones on its intro text, image, headline or button that open the landing page, and clicks on the logo, likes or comments don't count (LinkedIn Help, checked 2026-11-07).

The account-level rate in Campaign Manager blends every format you run. A handful of thought leader ads can lift it enough to hide a single image program that is running well under its median.

The same help page notes a newer change. Since October 2026, Campaign Manager reports impressions and eligible clicks for Sponsored Messaging, and LinkedIn warns that accounts running both Sponsored Messaging and Sponsored Content may see click-through rate, cost per click and reach differ between reporting views. Every benchmark in this post was counted before that.

If a Sponsored Content ad shows something like 8%, far above every table here, check the setup before you scale it. Look at the objective first, then whether the ad is really a message ad, whether the audience is tiny, and whether delivery ran on the LinkedIn Audience Network. Campaign Manager switches Audience Network on for each new ad set. Ad sets that Adwarp creates have it off (safety).

Fig. 03The ad set settings to check, top to bottom, before you scale an ad that shows something like 8%: objective, format, audience size, then Audience Network, which Adwarp leaves off.

LinkedIn ad CTR benchmarks by format

3 public sources split click-through rate by format: ZenABM's CTR post (updated 2026-02-16, 2025 data), theb2bhouse and AJ Wilcox's benchmarks article. Each column keeps its own date, since they measure different accounts in different years.

Format, ZenABM median, 2025 data, theb2bhouse, updated 2025-12-19, AJ Wilcox, updated 2026-04-10
FormatZenABM median, 2025 datatheb2bhouse, updated 2025-12-19AJ Wilcox, updated 2026-04-10
Thought leader ads2.68%n/an/a
Single image0.42%0.56%0.44% (all Sponsored Content)
Carousel0.32%0.40%in the 0.44%
Video0.24%0.44%in the 0.44%
Document0.43%0.43%n/a
Event0.55%0.55%n/a
Dynamic or Spotlight0.08%n/a0.08% (dynamic)
Text0.02%n/a0.025%
Message adsn/a3%3.2%
Fig. 04ZenABM's median click-through rate by format (2025 data, updated 2026-02-16): thought leader ads run more than 6 times the single image median, which is why 1 blended number says little about any single format.

Read your ad against its own row. A carousel at 0.35% is beating ZenABM's 0.32% carousel median, even though the same rate would trail every single image figure in the table.

Fig. 05A 0.35% click-through rate beats ZenABM's 0.32% carousel median but falls short of its 0.42% single image median (2025 data).

Where the 0.44% to 0.65% range comes from

Most pages that answer this question quote 0.44% to 0.65%, and it traces back to 2 places. theb2bhouse gives that range as the global average for Sponsored Content. Its author explained in the comments that the figures are pulled from LinkedIn's internal forecasting tool and mixed with averages from the agency's own client campaigns. AJ Wilcox's article (published 2022-07-18, updated 2026-04-10) gives 0.44% for Sponsored Content.

Factors, Total Product Marketing and ZenABM's CTR post all repeat the range. When 4 pages agree on it, you are mostly reading 1 forecast range, plus 1 practitioner's figure that happens to sit at its bottom end.

Fig. 06The 0.44% to 0.65% range comes from LinkedIn's forecasting tool plus theb2bhouse's client averages and is repeated by 3 other pages, with AJ Wilcox's own 0.44% sitting at its low end.

Why the sources disagree

ZenABM measured account-based programs aimed at narrow, senior audiences, while theb2bhouse works from LinkedIn's forecast tool and its agency's client averages. Format mix matters as well. Thought leader ads at 2.68% pull up any blended median, which is how ZenABM ends up with an overall median of 0.69% when its single image median is 0.42%.

Fig. 07In ZenABM's 2025 data, thought leader ads at 2.68% pull the all-format median up to 0.69%, while single image ads sit at 0.42%.
Figure, 1 source says, Another says, Why
Figure1 source saysAnother saysWhy
Single image0.42% (ZenABM median, 2025)0.56% (theb2bhouse)Account-based programs on narrow, senior audiences against forecast-tool averages
Video0.24% (ZenABM)0.44% (theb2bhouse)Video engagement on LinkedIn isn't a click
All formats0.69% (ZenABM median)0.44% to 0.65% (theb2bhouse), 0.62% (Databox, April 2023), 0.82% to 0.96% (HockeyStack, 2023 to 2024)Thought leader ads lift ZenABM's blend, and the rest are different years and samples
"Good"0.5% baseline, 0.8% strong (Factors, answer 1)Above 0.60%, 0.6% to 1.0% "good" (Factors, answer 6)The same page
Thought leader against single image6.4x (ZenABM)1.7x, credited to LinkedIn's 2023 pilot by third-party postsNo LinkedIn page for 1.7x turned up, so this post leaves it out

CTR by region, seniority and industry

Below the format level the data gets thinner. ZenABM's 2026 report (updated 2026-01-15) has per-company medians by country for 2025, and theb2bhouse breaks its numbers out by region, seniority and industry.

Cut, Segment, Click-through rate, Source
CutSegmentClick-through rateSource
CountryUnited States0.52%ZenABM median, 2025 data
CountryUnited Kingdom0.55%ZenABM median, 2025 data
CountryNetherlands0.72%ZenABM median, 2025 data
RegionNorth America0.5%theb2bhouse, updated 2025-12-19
RegionEurope, Middle East and Africa0.6%theb2bhouse, updated 2025-12-19
RegionAsia Pacific0.8%theb2bhouse, updated 2025-12-19
RegionLatin America0.7%theb2bhouse, updated 2025-12-19
SenioritySenior decision makers0.55%theb2bhouse, updated 2025-12-19
SeniorityJunior staff0.60%theb2bhouse, updated 2025-12-19
IndustrySoftware and internet0.39%theb2bhouse, updated 2025-12-19
IndustryRetail0.8%theb2bhouse, updated 2025-12-19
Fig. 08theb2bhouse's click-through rates by cut (updated 2025-12-19): industry spreads the widest, from 0.39% for software and internet to 0.8% for retail, while seniority barely moves the rate.

Treat the country medians as rough. The same ZenABM report has a second country table with higher figures, 0.92% for the United States among them, and it doesn't explain why the 2 sets differ.

If you sell software, look at the 0.39% first. It sits under theb2bhouse's own 0.44% to 0.65% range for Sponsored Content, so a software advertiser measuring against the headline range will read ordinary ads as weak. HockeyStack Labs found much higher rates across 70+ business software companies, 0.82% in the first quarter and 0.96% in the third, on data from 2023 into 2024. Databox reports a 0.62% median from April 2023. These are different samples from different years. Use the one whose sample looks most like your audience, and quote its date with it.

How many impressions before a CTR means anything

At the 0.42% single image median, 1,000 impressions bring about 4 clicks, and 1 click either way moves the rate by 0.10 points, about a third of the 0.29% single image floor used further down. The table below is Adwarp's calculation on hypothetical rates against that 0.29% single image floor (binomial odds, Wilson intervals). Read the second column as the chance that a perfectly typical ad looks like a pause candidate at that sample size.

Impressions, A single image ad at the 0.42% median reads under 0.29%, A true 0.21% ad, half the median, reads 0.29% or more, 95% range around an observed 0.29%
ImpressionsA single image ad at the 0.42% median reads under 0.29%A true 0.21% ad, half the median, reads 0.29% or more95% range around an observed 0.29%
50037.9%28.3%0.07% to 1.27%
1,00021.0%35.0%0.10% to 0.86%
1,50024.6%21.0%0.12% to 0.72%
3,00011.9%18.5%0.15% to 0.56%
5,0007.1%11.2%0.17% to 0.48%
10,0001.4%5.6%0.20% to 0.42%
Fig. 09Adwarp's calculation for a hypothetical single image ad at exactly the 0.42% median and 1,500 impressions: the orange bars are the 24.6% of samples where it reads under the 0.29% floor.

Adwarp's linkedin-ads-performance-review skill waits for about 1,000 impressions or 3 conversions before it calls any result, and the pause rule further down waits for 1,500. Even 1,500 is thin. A single image ad sitting exactly at the median still reads under the 0.29% floor about 1 time in 4.

Some ad sets never get there. A 1:1 account-based ad set or a small retargeting pool may not reach 1,500 impressions per ad in a month, so judge those over the whole flight rather than week by week.

The method treats every impression as an independent chance to click at the ad's true rate, which makes the number of clicks a binomial count. The middle 2 columns add up binomial probabilities, and they don't fall smoothly because clicks come in whole numbers: at 1,000 impressions 3 clicks reach 0.29%, and at 1,500 it takes 5. The last column is a Wilson score interval, which holds up better than the textbook plus-or-minus formula when clicks are this rare. Real clicks are messier, since the same person sees an ad more than once, so take these numbers as the least noise to expect.

CTR check calculator

CTR check

runs in your browser

Median: ZenABM, 2025 data. The floor is 70% of this median, as the pause-rules skill sets it.

%

Picking a format fills its default floor. Type your own to change it.

Start at 1,500. Judge nothing before it.

Under the floor, a pause candidate

Pause it only if the cap and the protections allow: not in your top 5 by conversions, not converting at or under your target cost, and not the last active ad in its ad set. The 95% range still reaches the floor, so the read isn't settled yet.

Click-through rate
0.20%
6 clicks on 3,000 impressions
95% range
0.09% to 0.44%
The ad's likely true rate
Odds an ad at the 0.42% median reads this low
3.2%
6 clicks or fewer on 3,000 impressions
Impressions to tell it from the 0.29% floor
about 13,800
At this same rate, the sample where the 95% range leaves the floor out.

Click-through rate is chargeable clicks divided by impressions (LinkedIn Help). The 95% range is a Wilson score interval. The odds treat every impression as an independent chance to click and add up binomial probabilities. Medians: ZenABM, 2025 data, updated 2026-02-16. The default floors are 70% of the lowest public median for the format, as the linkedin-ads-pause-rules skill sets them. This is math on hypothetical rates, and nothing you type leaves the page.

Type 10,000 impressions and 29 clicks and the 95% range reads 0.20% to 0.42%, the last row of the table. Picking a format fills its median and its default floor, and document and event ads start with no floor until you enter one. When an ad is under the floor but its range still reaches it, the verdict says the read isn't settled, and the last figure tells you roughly how many impressions would settle it.

When to pause a LinkedIn ad

Pause on a written rule, and use the same rule every week. This is the rule block from the linkedin-ads-pause-rules skill with its starting values. Copy it, change the numbers to fit your account, then leave it alone between runs so each week's table compares with the last.

pause-rules.md
Window:     last 30 days
Scope:      Sponsored Content in ad sets optimizing for clicks,
            website visits, leads or conversions
Floor:      click-through rate under the floor for the ad's
            format once it has 1,500 impressions in the window:
            0.29% single image, 0.22% carousel, 0.17% video,
            1.88% thought leader. No floor for document, event
            or other formats until you set one.
Cap:        5 pauses per run, highest spend first
Protected:  top 5 ads by conversions, then click-through rate
Protected:  any ad converting at or under the target cost per conversion
Protected:  the last active ad in an ad set

The floor catches ads nobody clicks. For a single image ad, under 0.29% at 1,500 impressions means 4 clicks or fewer.

The cap of 5 per run, highest spend first, keeps a bad week from emptying an account. Sorting by spend puts the biggest samples and the most money at the top, and the cap limits how much 1 noisy run can get wrong.

The top 5 ads by conversions stay on whatever their click-through rate says. An ad bringing in conversions at 0.25% is doing its job.

Any ad converting at or under your target cost per conversion stays on too. If you don't give a target, the skill uses the account's average cost per conversion for the window.

The last active ad in an ad set stays on. An ad serves only while its campaign, ad set and ad are all active, so pausing the last one stops the whole ad set without anyone deciding to stop it. Get its replacement live first.

Fig. 10The pause-rules skill's made-up example account, with its 9 ads under their format's floor sized and sorted by spend: 3 are protected, and once the cap of 5 is used up the next one waits a week.

You approve the rules once. Every run then starts as a dry-run table, and nothing pauses until you confirm the exact list. With Adwarp connected, the skill reads get_performance at ad level, previews each pause with update_ad and dryRun, pauses, and writes the reason with log_ad_change, so the change journal records why each ad stopped. Here it is on the skill's made-up example data:

claude ~ pause rules

> Run my pause rules on the last 30 days. Dry run first.

adwarp.list_campaigns active ad sets: 7 ad sets

adwarp.get_performance creative, last 30 days: 21 ads

Floors after 1,500 impressions: single image 0.29%, carousel 0.22%, video 0.17%

9 active ads under their floor, 3 too early to call, 2 documents with no floor

Pause 5, keep 3 protected, 1 next run

Pause list: 5 ads, 1,365 USD spent, 1 conversion. Pause these 5?

> pause these 5

adwarp.update_ad 100000102 PAUSED, dryRun: 1 change

adwarp.update_ad 100000102 PAUSED: paused

adwarp.log_ad_change "0.21% on 8,200 impressions, single image floor 0.29%": journaled

4 more ads, same 3 steps

Paused 5 of 5. Each reason is in the change journal.

To run it every week, give a scheduled agent a prompt like this one. The optimization page covers scheduling and the other weekly jobs.

Scheduled agent prompt
Every Monday at 9am, find ads under their format's click-through
rate floor after 1,500 impressions: 0.29% single image, 0.22%
carousel, 0.17% video, 1.88% thought leader. Keep the top 5 on,
ask me before pausing the rest.

After 4 weekly runs, read the logged pauses back with list_ad_changes and the pause-rules tag. Group them by format. If every run hits the cap, a floor sits above where your ads land, or the creative needs a bigger refresh than 5 ads at a time. A format that never has a pause has a floor doing no work. In both cases, change the number in pause-rules.md and write down the date and the reason.

Set a floor per format

Each default floor is 70% of the lowest public median for its format, rounded to 2 decimals, which is how the linkedin-ads-pause-rules skill sets them. That gives 0.29% for single image (0.42% median), 0.22% for carousel (0.32%), 0.17% for video (0.24%) and 1.88% for thought leader ads (2.68%), all from ZenABM's 2025 data. A typical ad clears its floor with room to spare, so the rule only catches ads well under the norm for their format. LinkedIn offers thought leader ads only with the brand awareness, engagement and video view objectives (LinkedIn), and the default scope leaves those out, so the 1.88% floor only comes into play once you add engagement ad sets to the scope.

Fig. 11The default floors for single image, carousel and video on 1 scale, each 70% of the format's ZenABM median (2025 data): ads in the orange stretch are pause candidates, and a flat 0.40% floor would sit above the carousel and video medians.

Document and event ads get no default. The public figures for documents disagree, and the event median repeats 1 source, so both stay out of the run until you set a floor from your own account's median for the format.

A flat 0.40% floor for everything would flag an ad sitting exactly at the single image median about 40% of the time, and the carousel and video medians sit below 0.40% to begin with. At 0.29%, that median ad still reads under at 1,500 impressions about 25% of the time. The cap and the protections are there for that 25%.

Replace, don't edit

When an ad fails, write a new one as a draft. LinkedIn sends an edited paused ad back to review, and once it's approved the status changes from paused to active (LinkedIn Help, Edit Direct Sponsored Content ads), so an edit can quietly switch a paused ad back on. A new ad also starts with clean numbers, and next week's run judges it on its own. Adwarp creates LinkedIn ads as DRAFT unless you explicitly ask for ACTIVE, so the replacement waits for you.

Fig. 12An edited paused ad goes back to LinkedIn's review and turns active once it's approved, so the safer move is a new ad, which Adwarp creates as a draft.

Why a high CTR can still bring no leads

ZenABM's CTR post found click-through rate slightly negatively correlated with pipeline across 211 companies, a rho of -0.170. In its 2026 report, the top quarter of companies by pipeline per dollar ran a median click-through rate of 0.21%, half the single image median. ZenABM says high contract values probably skew that group. Across these 211 companies, a higher click-through rate simply didn't come with more pipeline.

Fig. 13ZenABM's 2025 data: the top quarter by pipeline per dollar ran a 0.21% median click-through rate against 0.69% for the typical company; the cloud is a sketch of a rho of -0.170, not plotted data.

The floor screens for attention, and conversions decide what stays. That is why the pause rule protects the top 5 by conversions and anything converting under target. An ad with a healthy click-through rate and no conversions passes the floor, so it needs a different check. The linkedin-ads-lead-drivers skill ranks ads by the leads and conversions they produce, and it tells Lead Gen Form problems apart from problems with the ad itself. If every ad shows 0 conversions, check your conversion tracking before you blame the creative.

Fig. 14An ad can clear its floor and still bring 0 leads, and the lead-drivers skill works out whether the trouble sits in the ad or in its Lead Gen Form.

How to raise CTR by format

ZenABM's CTR post looked at what its highest-click-through ads had in common, and the findings differ by format:

  • Thought leader ads: 65% of the highest-click-through ones use a first-person "I" voice, and 75% of the top ones put the link in the bottom 25% of the text. More on the format in thought leader ads.
  • Video: LinkedIn autoplays video with the sound off, so the first 3 seconds have to show what the video covers. Text on screen does that.
  • Single image: cover the copy and check that the image and headline get the offer across in about 3 seconds. Concrete numbers and outcomes beat a vague promise. LinkedIn ad examples shows what that looks like.
Fig. 15ZenABM's format tips (updated 2026-02-16): the orange part of each card is what its top ads got right, from where the link sits in a thought leader post to the opening seconds of a video.

Put it to work

LinkedIn Ads optimization

Run the pause rule every Monday from your terminal, with a dry run first and the reason for every pause in the change journal.

adwarp.dev/linkedin-ads/optimization

By Stan Rymkiewicz, maintainer of adwarp. Published November 7, 2026.

FAQ

Questions Short answers, with sources.

Ask on GitHub
What is a good CTR for LinkedIn ads?

For a single image ad, 0.42% or higher, the median in ZenABM's 2025 data on 161,256 ads. Other formats need their own bar: the median is 2.68% for thought leader ads and 0.24% for video. Judge an ad only after about 1,500 impressions.

What is the average CTR on LinkedIn ads?

No single average holds up, because format moves the rate so much. ZenABM's 2025 per-company median is 0.69% across formats, theb2bhouse (updated 2025-12-19) puts Sponsored Content at 0.44% to 0.65%, and Databox found a 0.62% median in April 2023.

Is 1.2% a good CTR?

On a LinkedIn single image ad, yes, at nearly 3 times the 0.42% median in ZenABM's 2025 data. A thought leader ad at 1.2% is under that format's 2.68% median, so the answer depends on the format.

Is an 8% CTR good?

On Sponsored Content it is far above any public median, so check the setup before trusting it. Look at the objective, which decides what LinkedIn counts as a click, and at whether it is a message ad, a very small audience or delivery on the LinkedIn Audience Network.

LinkedIn Audience Network

Why is my CTR good but I get no leads?

Click-through rate measures attention, and ZenABM found it slightly negatively correlated with pipeline across 211 companies (rho -0.170). Check that conversion tracking works, then judge ads on the conversions they bring rather than their clicks.

linkedin-ads-lead-drivers skill

How many impressions before I judge a LinkedIn ad?

About 1,500 for a click-through rate floor, and more if the account has the volume. A single image ad sitting exactly at the 0.42% median still reads under the 0.29% floor about 25% of the time at 1,500 impressions, and about 7% of the time at 5,000.

What's a good CPM on LinkedIn?

theb2bhouse puts the average cost per 1,000 impressions at 33.80 USD. ZenABM's 2025 report gives a 62.67 USD median for the United States and 78.30 USD for account-based programs overall, though a later table in the same report puts the median near 40 USD.

What LinkedIn ads cost

What is a good CTR for LinkedIn thought leader ads?

2.0% or more, against a 2.68% median in ZenABM's 2025 data, and the pause-rules skill sets their floor at 1.88%. That median is about 6.4 times the single image median, so compare thought leader ads only with each other.

Thought leader ads

Does a higher CTR lower my cost per click?

It can. LinkedIn says the more relevant an ad, the lower the price, and it names click-through rate, comments, likes and shares as the signals behind relevance (LinkedIn Help a420561).

What is a good CTR for LinkedIn message ads?

About 3% per theb2bhouse, or 3.2% per AJ Wilcox. Both were counted before October 2026, when Campaign Manager began reporting impressions and eligible clicks for Sponsored Messaging, so newer numbers may not line up with them.

Free and open source MIT licensed. Run it locally, self-host the endpoint, or read every line on GitHub.

$ claude mcp add adwarp -- npx -y adwarp mcp

Read the docs

GitHub