How to Audit Translation Memory Quality
Leverage looks fine. Translators still rewrite the matches. Reviewers keep flagging the same term. Someone asks for a TM rebuild. That is usually an audit ticket, not a new tool.
This page is a maintenance pass for LSP leads and in-house localization PMs who already have a live TM. It is not a brand essay, and it is not the same ticket as conflicting entries, exact-pair duplicates, or cross-project term drift.
What this audit is — and is not
An audit decides which stored units should still be offered. Three nearby problems get mixed into that ticket:
- Conflict: same full source, two different targets. Choose a master. That is the conflict workflow.
- Exact duplicate: same source and same target stored twice. Stop the second write. That is duplicate prevention.
- Term drift: the same concept, inside different segments and jobs, approved as different wording. The TM may show no conflicting row. That is the terminology diagnostic.
If matches vanished after a tool move or TMX import, fix lookup first: Why Translation Memory Matches Break After Migration. Do not clean a TM you cannot search.
Start from last quarter's QA flags
Do not open the TM at segment one. Export terminology and consistency flags from Xbench, Verifika, or the CAT tool's own checker for the last few projects. For each flag, ask whether a TM match was applied. If it was, that unit is a candidate for edit, archive, or delete.
This is the highest-leverage slice: units that already hurt a deliverable. A random sample of the whole memory will spend the afternoon on segments nobody reuses.
The same signal shows up without a QA export: translators dismissing 95% matches on sight, or the same reviewer comment appearing across jobs. Those are TM tickets. They are not a training gap.
Named maintenance tools
Run these on the live TM before you export anything to a spreadsheet.
memoQ
On Project home, open Translation memories, right-click the TM, and choose Edit. Filter and sort first if you only want one client or a date range. On the Translation memory editor ribbon, click Remove Duplicates. The Filter for duplicates window is where you say what counts as a duplicate (source only, source and target, role, context, case, punctuation, whitespace, tags) and what happens to the non-master units (merge, delete, or leave).
memoQ's own maintenance notes: duplicates come from confirming the same translation under different contexts, a TM that allows multiple translations, importing a TMX more than once, or confirming non-text segments (numbers, dashes, tags). After an import, run Remove Duplicates again. Use Sources equal, roles different when role storage created translator / reviewer / reviewer-2 copies of the same pair. Merge unless the extras are truly identical — delete drops metadata you may still want.
Save changes (Ctrl+S). An unsaved merge is not an audit.
Trados Studio
Open the TM in the Translation Memories view. In Search Details, choose Search in potential duplicates only and run the search. Studio pages one duplicate set at a time; step through with Next Page / Previous Page, edit or delete, then Commit Changes.
For a bulk cut, create the filter first, then Home → Batch Delete. RWS is explicit: batch delete is committed automatically and cannot be undone. Do not use an unfiltered batch delete unless you intend to empty the TM (the TMX export → wipe → reimport with Keep most recent translation units pattern). Add new translation units on that reimport writes the duplicates back.
Phrase (and any TMS with a master TM)
Phrase's TM-quality article is a write-policy, not a cleanup wizard: new or variable vendors write to a working TM; the master TM stays read-only until review. Then put the master back in read-and-write for the review step. Preventing a bad confirm is cheaper than finding it later. If your CAT tool has no working-TM concept, the same rule is one writable TM per account and a reference TM for imports you have not audited.
Automated checks after the named tools
Once the editor has grouped the obvious duplicates, filter for structural junk:
- Empty or whitespace targets
- Source = target (almost always an import or copy-paste, not a deliberate DNT — DNTs belong in the termbase)
- Mismatched inline tags or placeholders
- Length-ratio outliers for the language pair (omission, leftover placeholder, or a different sentence)
- High-edit / high-rejection units, if the tool stores whether a match was accepted or rewritten
These are cheap filters. They are not a linguistic review.
After a glossary or style change
Filter by confirmation date: everything confirmed before the last major term or product-name change. Do not delete that set. Move it to a lower-priority or reference TM so lookup still finds it, at a reduced match, and the current master no longer auto-inserts last year's wording. The terminology page is the cross-project version of this ticket; here you are quarantining the stale rows in this memory.
Sampling what the filters cannot see
Automated checks do not judge accuracy. You will not review the whole TM. Sample:
- High-frequency units — one bad reuse hits every job
- High-friction units — the QA flags and high-edit list you already pulled
- A small slice of long or unusual units — they hide import and alignment damage because nobody looks at them
Split the sample by client or domain if one memory holds more than one. Medical IFU and marketing copy do not share cleanup criteria.
For each sampled unit, check accuracy, current terminology, fluency, and whether the wording is safe outside its original sentence. Flag failures for archive or delete. There is no honest percentage that “gives confidence” across every TM size; stop when the high-reuse and high-friction lists are clean.
Archive, delete, or leave
Archive (or move to a reference TM) when the unit was right in context and is now outdated, or when two valid targets exist for different domains and only one should be the default.
Delete when the translation is wrong, the row is malformed, or it is an exact duplicate with no extra metadata.
Leave when the extras are intentional variants tagged by locale, register, or product line. Untagged variants are conflicts — use the conflict workflow.
After cleanup: tag reviewed units if the tool has custom fields, update the termbase with decisions you just made, and restrict who can write to the master TM. An audit without a write policy is a one-day cleanup.
When to run it
- Light pass on a fixed cadence: duplicates, empty/source=target, date filter since the last glossary change
- After a large project: units translators rewrote the same way more than once
- The day a term changes: find the old form and quarantine it. Waiting until the next quarterly slot is how the old name ships again
- Before a major job if the memory has not been touched recently
The limit an audit cannot repair
A TM stores outputs, not the reason those outputs were chosen. You can delete the worst rows and still offer a fluent 100% that is wrong for this chapter, this register, or this year's term list. That is the structural limit we described in Your Translation Memory Is Faithfully Preserving Your Mistakes.
That is why we built Aquilla around living memory instead of isolated segment pairs. Suggestions come from the project's own work, surrounding context, and the team's documented translation philosophy. You can still run a conventional TM. This page exists because that workflow is real, and the maintenance has named steps.
Summary: TM audit checklist
- ☐ Export last-quarter QA flags (Xbench, Verifika, or the CAT checker) and keep the ones that came from a TM match
- ☐ Separate conflicts, exact-pair duplicates, and term drift — do not run one workflow on all three
- ☐ memoQ: Edit TM → Remove Duplicates; merge unless extras are identical; save
- ☐ Trados: Search in potential duplicates only; commit. Batch Delete only with a filter you meant; it cannot be undone
- ☐ Filter empty, source=target, tag mismatches, length-ratio outliers, high-edit units
- ☐ After a glossary change, date-filter and move stale units to a reference TM — do not mass-delete
- ☐ Sample high-frequency and high-friction units; stop when those lists are clean
- ☐ Working TM for untrusted writes; master TM read-only until review
- ☐ If matches died after a migration, fix lookup before you clean
FAQ
How to audit translation memory quality?
Start from last quarter's QA flags and ask which ones came from a TM match. Then run the named tools: memoQ Remove Duplicates; Trados Search in potential duplicates only and (carefully) Batch Delete. Filter units confirmed before the last glossary change into a reference TM. Keep untrusted vendors on a working TM until review.
Is a TM audit the same as resolving conflicting entries?
No. A conflict is one source, two targets. An audit is the wider pass — empty rows, source=target imports, stale terms, tag damage, and the write policy. Resolve conflicts inside the audit. Do not stop at conflicts.
Should I export to TMX and dedupe in a spreadsheet?
Only if the CAT editor cannot show the groups. memoQ and Trados already group identical sources. If you do export, reimport with overwrite or keep-most-recent. Add-new writes the duplicates back. See duplicate prevention.
Do I delete every unit confirmed before the last style update?
No. Move them to a lower-priority TM. They are unverified under the current glossary, not automatically wrong.
Related Resources
- Your Translation Memory Is Faithfully Preserving Your Mistakes — why TM quality degrades and the structural limits of segment-based memory
- How to Resolve Translation Memory Conflicts — same source, different targets; choose a master
- How to Prevent Duplicate Segments in Translation Memory — stop exact pairs from being written again after you clean them
- Why Terminology Is Inconsistent Across Translation Projects — when each job passes QA and the account still ships three words for one concept
- Why Translation Memory Matches Break After Migration — when matches disappear after a tool move or TMX import, before you treat it as a quality problem
- What Causes Fuzzy Matches to Fail in Translation Memory — when lookup, not stored quality, is the ticket
- Aquilla — a translation editor with living memory that understands your team's translation philosophy, not just past outputs