Skip to content
induwara.lk
induwara.lkAI · Machine Translation

METEOR Score Calculator

Paste a candidate translation and a reference to get the METEOR score with the full breakdown, unigram matches, precision, recall, the recall-weighted Fmean, the chunk-based fragmentation penalty, and the aligned tokens highlighted. Matches NLTK, no signup, runs in your browser.

By Induwara AshinsanaUpdated Oct 19, 2026
METEOR Score
One sentence. Stays on your device.0 words
One reference. Stays on your device.0 words
Matching
Examples
METEOR
—
Rating
—
Fmean
—
Penalty
—

Runs entirely in your browser, your text is never uploaded, logged, or stored. Method: one-to-one unigram alignment, recall-weighted Fmean, and a chunk-based fragmentation penalty, per Banerjee & Lavie (2005); reconciled to NLTK single_meteor_score. Up to 50,000 characters per box.

How it works

METEOR (Metric for Evaluation of Translation with Explicit ORdering), defined by Banerjee & Lavie (2005), scores a candidate against a reference by first aligning their words and then balancing how much content is shared against how well the word order is preserved. Unlike BLEU, it rewards recall heavily and adds an explicit penalty for jumbled output. The score is:

METEOR = Fmean · (1 − Pen)

It is built in four steps from the tokenised, optionally lowercased texts:

  1. Align unigrams. Build the largest one-to-one mapping between candidate and reference words. This tool uses exact matching and, optionally, a Porter-stem stage applied to the words left over after the exact pass, the same exact/stem ordering as NLTK's meteor_score. WordNet synonym matching is out of scope here.
  2. Precision and recall. With m mapped unigrams, candidate length c and reference length r, P = m/c and R = m/r.
  3. Fmean. A recall-weighted harmonic mean, Fmean = (P·R)/(α·P + (1 − α)·R). With the default α = 0.9 this equals 10·P·R/(R + 9·P), so recall pulls nine times harder than precision.
  4. Fragmentation penalty. Group the mapped unigrams into the fewest chunks, runs adjacent in both the candidate and the reference. With ch chunks over m matches, Pen = γ·(ch/m)^β using γ = 0.5 and β = 3. Many short chunks (scrambled word order) drive the penalty up; one long chunk barely dents the score.

The α = 0.9, γ = 0.5 and β = 3 defaults are the values from Banerjee & Lavie (2005), confirmed against NLTK's single_meteor_score defaults; Lavie & Agarwal (2007) discuss tuning them per language. Fmean is computed as the direct ratio and independently re-derived as the reciprocal 1/(α/R + (1 − α)/P); when the two agree the score is flagged “cross-checked”. One quirk worth knowing: two identical sentences score about 0.998, not 1, because a single chunk still incurs Pen = γ·(1/m)^β, a correct, documented property of METEOR.

Tokenisation and casing, the usual reason two tools disagree

Nothing is matched until both texts are tokenised. Here, runs of letters and digits become word tokens and every other character becomes a token of its own, so the mat. is three tokens, not two. Lowercasing is on by default. Both choices move the score, because METEOR compares surface forms: with lowercasing off, “The Cat Sat” against “the cat sat” finds no matches at all and scores 0.0000, and one trailing full stop on an otherwise identical six-word pair takes it from 0.9977 down to 0.9813. When your number will not reconcile with another implementation, check the tokeniser before you question the formula. The same holds for the BLEU calculator and every other overlap metric.

Edge cases, and what this tool does with them

  • No matches at all. With m = 0 both P and R are 0 and Fmean divides by zero. METEOR is defined as 0 in that case, which is what NLTK returns and what you get here, with the alignment view showing every candidate token unmatched.
  • Empty candidate or reference. An empty side is not a score of 0, it is no score at all. The tool stops and tells you which box is empty rather than publishing a misleading zero.
  • Repeated words. The alignment is greedy, not exhaustive, so a repeated reference word can be mapped to the far copy. Scoring “the cat sat” against “the cat sat on the mat” matches all three candidate words, but the candidate's “the” takes the reference's second “the” at index 4, which splits the match into two chunks: Pen = 0.5·(2/3)³ = 0.1481 and METEOR = 0.4483, where a single chunk would have given 0.5166. NLTK does exactly the same thing. It is the price of a greedy alignment, and worth knowing before you file a bug against your own evaluation script.
  • Length mismatch. METEOR has no brevity penalty of BLEU's kind. The recall term does that job, and because α = 0.9 it does it asymmetrically: dropping content costs far more than adding it. The third and fourth worked examples below put numbers on that.
  • Custom parameters. α and γ are clamped to [0, 1] and β to non-negative values, and anything unparseable falls back to the published default, so a typo in the Advanced panel cannot produce NaN or a score outside 0 to 1.

From one sentence to a whole test set

This calculator scores one sentence pair, which is the unit METEOR was designed to correlate with human judgment on. Two different conventions exist for reporting a system-level number, and they do not agree. The 2005 paper aggregates the sufficient statistics over the whole test set first, summing m, c, r and ch across every sentence and applying the formulas once; most modern toolkits instead report the arithmetic mean of the per-sentence scores. Aggregated statistics let long sentences pull harder, a sentence mean treats every sentence alike. Neither is wrong, but say which one you used, and never compare a mean against an aggregate. For a quick character-level sanity check on the same data, the chrF calculator is less sensitive to the tokeniser than any word-level metric.

Worked examples

One substitution → 0.8067

Candidate
the cat is on the mat
Reference
the cat sat on the mat
  1. Matches: the, cat, on, the, mat → m = 5 (sat ≠ is)
  2. c = 6, r = 6 → P = R = 5/6 = 0.8333
  3. Fmean = 10·(5/6)² / ((5/6) + 9·(5/6)) = 0.8333
  4. Chunks {the, cat} and {on, the, mat} → ch = 2
  5. Pen = 0.5·(2/5)³ = 0.5·0.064 = 0.0320
  6. METEOR = 0.8333 · (1 − 0.0320) = 0.8067

Same words, reordered → 0.8519

Candidate
the bird flew over a house
Reference
a bird flew over the house
  1. Every word matches → m = 6, P = R = 1, Fmean = 1
  2. Best alignment chunks: {the}, {bird, flew, over}, {a}, {house}
  3. ch = 4 over m = 6
  4. Pen = 0.5·(4/6)³ = 0.5·0.2963 = 0.1481
  5. METEOR = 1 · (1 − 0.1481) = 0.8519
  6. Same words as a perfect match, but the swapped order costs ~0.15

Edge case: no overlap at all → 0.0000

Candidate
alpha beta gamma
Reference
one two three
  1. No candidate token appears in the reference → m = 0
  2. P = 0/3 = 0, R = 0/3 = 0
  3. Fmean divides by zero, so METEOR is defined as 0
  4. No matches means no chunks: ch = 0, Pen = 0
  5. METEOR = 0.0000 (floor of the scale, not an error)
  6. Same result as NLTK on the m = 0 case

Edge case: dropped content → 0.5924

Candidate
a small cat sat
Reference
a small cat sat on the mat
  1. All four candidate words match → m = 4, c = 4, r = 7
  2. P = 4/4 = 1.0000, R = 4/7 = 0.5714
  3. Fmean = (1 · 0.5714)/(0.9 · 1 + 0.1 · 0.5714) = 0.5970
  4. One unbroken run → ch = 1, Pen = 0.5·(1/4)³ = 0.0078
  5. METEOR = 0.5970 · (1 − 0.0078) = 0.5924
  6. Perfect precision, yet the score halves: α = 0.9 punishes lost meaning

Edge case: padded output → 0.9575

Candidate
a small cat sat on the mat near our gate
Reference
a small cat sat on the mat
  1. Every reference word is covered → m = 7, c = 10, r = 7
  2. P = 7/10 = 0.7000, R = 7/7 = 1.0000
  3. Fmean = (0.7 · 1)/(0.9 · 0.7 + 0.1 · 1) = 0.9589
  4. One unbroken run → ch = 1, Pen = 0.5·(1/7)³ = 0.0015
  5. METEOR = 0.9589 · (1 − 0.0015) = 0.9575
  6. Three words wrong in either direction: dropping cost 0.41, padding cost 0.04

Porter-stem mode → 0.6389

Candidate
the cats are running
Reference
the cat is run
  1. Exact: the = the. Stem: cats → cat, running → run
  2. m = 3 (are/is do not match), c = r = 4
  3. P = R = 3/4 = 0.7500 → Fmean = 0.7500
  4. Chunks {the, cat} and {run} → ch = 2
  5. Pen = 0.5·(2/3)³ = 0.1481
  6. METEOR = 0.7500 · (1 − 0.1481) = 0.6389

METEOR next to BLEU, ROUGE, chrF and WER

No single overlap metric is trustworthy on its own. The usual practice is to report two or three together and look at where they disagree, because each one is blind to something different:

  • BLEU counts matching n-grams up to length four and applies a brevity penalty. It is precision-led, has no notion of stems or synonyms, and is noisy on a single sentence, which is why it is quoted at corpus level. Where METEOR forgives padding and punishes dropped content, BLEU leans the other way.
  • ROUGE was built for summarisation and is recall-oriented. ROUGE-L uses the longest common subsequence rather than chunks, so it rewards word order more gently than METEOR's fragmentation penalty does. It shares the Porter stemmer used in this tool's stem mode.
  • chrF scores character n-grams instead of words, which makes it the safer choice for morphologically rich languages, Sinhala and Tamil included, where one wrong suffix destroys a word-level match that was almost right.
  • WER is an edit-distance metric, (substitutions + deletions + insertions) divided by reference length, where lower is better and the scale runs past 1. It is the standard for speech recognition and ignores meaning entirely.

Pick METEOR when you want sentence-level agreement with human raters and credit for inflected forms. Pick BLEU when you need a number other papers will recognise without explanation. Report both when you are claiming an improvement, and publish your tokenisation alongside the scores, because a METEOR figure without its tokeniser and matching mode cannot be reproduced by anyone, including you in six months.

Limits worth stating in your results

METEOR measures overlap with one reference, not translation quality. A candidate can be a perfectly good translation and score poorly simply because the reference phrased it differently, and a candidate can score well while reversing the meaning of the sentence, since negation is a single short word. Three practical limits to keep in mind:

  • One reference sets the ceiling. The more valid ways there are to say something, the more a single reference understates every system. If scores look oddly low across the board, the reference set is usually the suspect.
  • Short sentences are unstable. The penalty term depends on ch/m, so with m = 2 or m = 3 a single chunk break moves the score by a tenth or more. Judge systems on a few hundred sentences, not on one.
  • Synonyms are out of scope here. This version runs the exact and Porter-stem stages only. A paraphrase that uses different words for the same idea will be marked down, so for semantic closeness rather than surface overlap, an embedding-based check is the better instrument.

Everything is computed in your browser. No candidate text, reference text or score leaves the page, which matters when the sentences you are evaluating come from a client's data.

Frequently asked questions

Sources & references

Related tools

Comments & feedback

Spotted a bug or want an improvement? Tell us, our team reviews every comment, and good ideas get built. Comments are public and anonymous.

Found a bug, edge case, or want to suggest an improvement?

Email me at [email protected] , most fixes ship within 24 hours.