Keyword Triage Google Ads keyword profitability checker

Keyword Triage is a free tool that checks the profitability of every keyword in a Google Ads or Microsoft Ads report. Upload the report and each keyword is labeled Cut, Trim bids, Keep, Scale or Needs data against your target CPA or ROAS.

Your data never leaves this pageEverything runs in your browser. Nothing is uploaded or stored, and this page is technically blocked from sending data to any server. It even works offline.

1Set your goal

Optimize for

Use your break-even CPA: the gross profit from one conversion. A keyword that costs more than this per conversion is losing money.

2Drop your keyword report here

Enter your target above to continue.

Excel (.xlsx), CSV or TSV export from Google Ads or Microsoft Ads, or any spreadsheet with one row per keyword.

Google AdsCampaigns › Keywords › Search keywords. Pick a date range (60–90 days is ideal), then Download › Excel .csv or .xlsx.
Microsoft AdsCampaigns › Keywords. Set the date range, then Download › CSV or Excel.
Columns neededKeyword, Cost and Conversions. Conversion value, Clicks, Match type, Campaign, Ad group and Search lost IS make the advice better.

What Keyword Triage does

Keyword Triage reads a keyword report exported from Google Ads or Microsoft Ads and tells you, keyword by keyword, whether the keyword is profitable at your target cost per acquisition (CPA) or target return on ad spend (ROAS). Each keyword gets one of five verdicts, a one-line reason, and an estimate of how much it spent above target.

Keyword Triage at a glance
What it isA free, browser-based keyword profitability checker for pay-per-click (PPC) search ads
Works withGoogle Ads and Microsoft Ads (Bing Ads) keyword reports and search term reports
File formatsCSV, TSV, UTF-16 text and Excel .xlsx. The old Excel 97–2003 .xls format is not supported.
Required columnsKeyword, Cost and Conversions
Goal typesTarget CPA or target ROAS. The target is required and is entered before the report is uploaded.
VerdictsCut, Trim bids, Keep, Scale, Needs data
OutputsVerdict table, CSV export, and the Cut list copied as exact-match negative keywords
PrivacyThe report is processed in the browser. A Content-Security-Policy blocks every network request except the site’s own stylesheet and fonts, so the file cannot be uploaded.
Account accessNone. Keyword Triage never connects to your ad account and cannot change bids, budgets or keywords.
PriceFree, no sign-up

How to find unprofitable keywords in Google Ads with Keyword Triage

To find unprofitable Google Ads keywords, enter your break-even CPA or ROAS in Keyword Triage, export a keyword report covering 60 to 90 days, drop it in, and review the keywords labeled Cut.

  1. Set your target. Choose Target CPA or Target ROAS and enter your break-even number. The target is required: the upload box stays locked until it is filled in, because every verdict is measured against it.
  2. Export the report. In Google Ads, go to Campaigns › Keywords › Search keywords, set the date range to the last 60–90 days, and choose Download › Excel .csv or .xlsx. In Microsoft Ads, go to Campaigns › Keywords, set the date range, and choose Download › CSV or Excel.
  3. Load the file. Drop the file onto the upload box at the top of this page, or click Choose file. Keyword Triage detects the header row, the columns and the currency automatically.
  4. Review the Cut list. Click the Cut card to filter the table. Every row explains its verdict, such as “Spent $410 with no conversions across 96 clicks.”
  5. Act on it. Pause the Cut keywords, or click Copy cut list as negatives and paste the exact-match negatives into a negative keyword list. Lower bids on Trim keywords, and give Scale keywords more budget or higher bids.

How Keyword Triage decides if a keyword is profitable

Keyword Triage compares each keyword’s CPA or ROAS with your target and sorts it into one of five verdicts. A keyword with no conversions is judged on spend alone: it is cut once its spend reaches the zero-conversion threshold.

Keyword Triage verdict rules
VerdictRule in CPA modeRule in ROAS modeRecommended action
CutNo conversions after spending the zero-conversion threshold, or CPA more than 2× targetNo conversion value after spending the threshold, or ROAS below 50% of targetPause the keyword or add it as a negative
Trim bidsCPA about 20% to 100% above targetROAS 50% to 83% of targetLower the bid or tighten the match type before cutting
KeepCPA within about 20% of target, or better than target with fewer conversions than the scaling minimumROAS 83% to 125% of target, or better with fewer conversions than the scaling minimumLeave it running
ScaleCPA at least 20% below target, with at least the minimum conversions to scale (default 2)ROAS at least 125% of target, with at least the minimum conversions to scaleRaise budget or bids, guided by lost impression share
Needs dataNo conversions and spend below the threshold, or an over-target keyword with too few clicks and conversions to judgeSame as CPA mode, using conversion valueLeave it running and check again later

The efficiency score behind each verdict

Keyword Triage converts every converting keyword into one efficiency score, where 1.0 means exactly on target and higher is better:

  • CPA mode: efficiency = target CPA ÷ keyword CPA, where keyword CPA = cost ÷ conversions.
  • ROAS mode: efficiency = keyword ROAS ÷ target ROAS, where keyword ROAS = conversion value ÷ cost.

The verdict cut-offs are: efficiency below 0.5 is Cut, 0.5 to 0.83 is Trim bids, 0.83 to 1.25 is Keep, and 1.25 or higher is Scale. A keyword with efficiency of 1.25 or higher but fewer conversions than the scaling minimum stays in Keep until it has more data.

Default thresholds

The target CPA or target ROAS has no default; you enter it before uploading. Every other threshold can be edited in the Your goal panel after upload, and Keyword Triage sets their defaults from your target and the uploaded report:

  • Zero-conversion cut threshold defaults to 1.5× target CPA in CPA mode. In ROAS mode it defaults to 2 × (average conversion value ÷ target ROAS).
  • Minimum clicks before judging defaults to 1.5 ÷ the account conversion rate, kept between 10 and 100 clicks. At a 3% conversion rate the default is 50 clicks.
  • Minimum conversions to scale defaults to 2.

How “Spend above target” is calculated

Spend above target is the amount a keyword spent beyond what its results were worth at your target. Keyword Triage adds it up across Cut and Trim bids keywords to estimate how much you would save by cutting and trimming to target.

  • CPA mode: spend above target = cost − (conversions × target CPA).
  • ROAS mode: spend above target = cost − (conversion value ÷ target ROAS).
  • Zero-conversion keywords in Cut count their full cost as spend above target.

How Keyword Triage uses Search lost impression share

For keywords labeled Scale, Keyword Triage reads the Search lost IS (budget) and Search lost IS (rank) columns, when the report has them, to say what is limiting the keyword.

  • Search lost IS (budget) of 10% or more: the campaign budget is capping the keyword, so raise the campaign budget.
  • Search lost IS (rank) of 10% or more: Ad Rank is capping the keyword, so raise the bid.
  • Both under 10%: the keyword already shows for nearly every eligible search, so grow it with close variants or broader match types.

Google Ads reports Search lost IS (budget) only at the campaign level, so a keyword report usually includes Search lost IS (rank) alone (Google Ads Help: Get impression share data). To get budget advice, add the campaign’s lost impression share as a column before loading the file. Google Ads reports very low impression share as “< 10%” and very high share as “> 90%”. Keyword Triage reads these as 5% and 95%.

Worked example: seven Google Ads keywords at a $50 target CPA

This example uses a target CPA of $50, so the default zero-conversion cut threshold is $75 (1.5 × $50) and the minimum conversions to scale is 2.

Seven keywords judged against a $50 target CPA
KeywordCostConversionsCPAEfficiencyVerdictSpend above target
copywriting jobs$4100——Cut (no conversions, spend past $75)$410
ppc management pricing$6205$1240.40Cut (CPA over 2× target)$370
freelance copywriter$3906$650.77Trim bids (30% over target)$90
google ads copywriter$3106$51.670.97Keep (on target)—
saas copywriter$351$351.43Keep (strong, but only 1 conversion)—
ppc audit$36012$301.67Scale (40% under target)—
b2b copywriter$700——Needs data ($70 of the $75 threshold)—

In this example, the two Cut keywords and one Trim bids keyword spent $870 above target ($410 + $370 + $90). If “ppc audit” also shows 25% Search lost IS (budget), Keyword Triage recommends raising that campaign’s budget.

Which report columns Keyword Triage needs

Keyword Triage needs three columns: Keyword, Cost and Conversions. Optional columns make the advice more specific. Column names are matched automatically, from English or Swedish Google Ads exports (Sökord, Kostnad, Konverteringar), and any column can be reassigned under Column mapping.

Columns Keyword Triage reads
ColumnRequiredGoogle Ads nameMicrosoft Ads nameUsed for
KeywordYesKeyword, Search keyword or Search termKeyword or Search termIdentifying each row
CostYesCostSpendCPA, ROAS and spend above target
ConversionsYesConversionsConversions or Conv.CPA and the zero-conversion rule
Conversion valueNoConv. valueRevenueROAS mode (unavailable without it)
ClicksNoClicksClicksThe minimum clicks rule and the default threshold
Match type, Campaign, Ad groupNoMatch type, Campaign, Ad groupMatch type, Campaign name, Ad group nameLabels and filtering
Lost impression shareNoSearch lost IS (budget), Search lost IS (rank)Impression share lost to budget, Impression share lost to rankScaling advice

Summary rows such as “Total: Account” are skipped automatically. Keyword Triage can also triage a search term report: load it, then set the Keyword field to the Search term column under Column mapping, and the Cut list becomes a list of search terms to add as negatives.

Is my keyword report uploaded anywhere?

No. Keyword Triage reads the file with the browser’s FileReader API and analyzes it in JavaScript on your device. The page sets a Content-Security-Policy with default-src 'none' and connect-src 'none', which tells the browser to block every network request the page could make, including fetch, XHR, beacons, external scripts, fonts and images. The one request it allows is for this site’s own stylesheet (style-src 'self'), and a stylesheet request can’t carry your report. The only thing Keyword Triage stores is your light or dark theme preference. You can load the page, disconnect from the internet, and it keeps working.

What Keyword Triage does not account for

Keyword Triage judges keywords on the last-click conversions and costs in the report, so its verdicts are starting points, not autopilot. Check these before pausing a high-spend keyword:

  • Conversion lag: Google Ads credits a conversion to the date of the click, and conversions can be reported up to 90 days later, so recent days can show an inflated CPA and a deflated ROAS (Google Ads Help: About conversion lag reporting). End the date range a few days before today, or check the Days to conversion segment first.
  • Assisted conversions: upper-funnel keywords can start journeys that another keyword gets credit for.
  • Seasonality: a date range that spans a peak or a slump can misjudge a keyword’s normal performance.
  • Lifetime value: a keyword that loses money on the first purchase can still be profitable on repeat purchases.
  • Brand keywords: brand terms often look extremely efficient because they capture demand that would have converted anyway.

Frequently asked questions

What is a good CPA for Google Ads keywords?

A good CPA is any CPA below your break-even CPA, which is the gross profit you make from one conversion. If a sale brings in $200 of gross profit, any keyword with a CPA under $200 is profitable before overhead. Keyword Triage asks for your break-even CPA or target CPA before you upload a report, because every verdict is measured against it.

How do I calculate break-even ROAS?

Break-even ROAS is 1 divided by your gross margin. A product with a 40% gross margin has a break-even ROAS of 2.5 (1 ÷ 0.40), meaning every $1 of ad spend must bring back $2.50 in revenue to cover product costs. Enter it in Keyword Triage as a target ROAS of 2.5.

When should I pause a keyword with zero conversions?

Pause a zero-conversion keyword once it has spent more than you would pay for one conversion, with some margin for bad luck. Keyword Triage uses 1.5× your target CPA as the default cut threshold, so with a $50 target CPA a keyword is cut after spending $75 with no conversions.

How much data do I need before judging a keyword?

Use 60 to 90 days of data so most keywords have enough clicks to judge. Keyword Triage leaves a keyword in Needs data until it reaches the minimum clicks, which defaults to about 1.5 expected conversions’ worth of clicks (1.5 ÷ your conversion rate, between 10 and 100 clicks).

Does Keyword Triage work with Microsoft Ads?

Yes. Keyword Triage reads Microsoft Ads (formerly Bing Ads) keyword reports in CSV or Excel format and recognizes Microsoft column names such as Spend, Revenue and Impression share lost to budget.

Can Keyword Triage change bids or pause keywords in my account?

No. Keyword Triage never connects to Google Ads or Microsoft Ads. It only reads the file you give it, and you make any changes in your ad account yourself.

Is Keyword Triage free?

Yes. Keyword Triage is free, needs no account or sign-up, and has no usage limits.

Glossary

CPA (cost per acquisition)
Cost divided by conversions. The average amount spent to get one conversion.
ROAS (return on ad spend)
Conversion value divided by cost. A ROAS of 4 means $4 of revenue for every $1 spent.
Break-even CPA
The gross profit from one conversion. Keywords with a CPA above it lose money.
Break-even ROAS
1 divided by gross margin. Keywords with a ROAS below it lose money.
Search lost IS (budget)
The share of eligible impressions a keyword missed because its campaign ran out of budget.
Search lost IS (rank)
The share of eligible impressions a keyword missed because its Ad Rank (bid and quality) was too low.
Exact-match negative keyword
A negative keyword in square brackets, such as [copywriting jobs], that blocks ads only for that exact search.