Remove machine translation from a translation memory
Machine translation seeps into a TM every time a project uses pretranslation or MTQE — and once it's there, it's invisible to the eye but corrosive to quality. A TM that's meant to represent your best human work quietly fills with un-edited machine output. This page is about finding those units and getting them out.
━━ the problem
A machine-pretranslated unit sits in the TM looking exactly like a human translation. On the next project it can surface as a 100% match and get delivered with no review — so an un-edited machine guess becomes 'approved' work. The only reliable tell is the metadata origin, not the text.
If your TM later trains or primes an MT engine (most do, eventually), the machine learns from its own earlier output. Errors compound instead of getting corrected. Stripping machine-origin units before the TM feeds anything downstream breaks the loop.
Fluent MT reads like a human wrote it — that's the whole problem. You cannot eyeball a 200k-unit TM and find the machine ones. Detection has to key on the creationid/changeid signature the MT engine or pretranslation step stamped, which is exactly what the engine does.
━━ how TM Cleaner handles it
Upload the TMX, and the engine flags every unit whose creationid or changeid matches a machine-translation signature — Google, DeepL, Bing, Yandex, and any custom patterns you add for your own toolchain. Preview the flagged units, then download a TM with the MT contamination removed and a re-importable file of exactly what was cut.
- ✓detects MT-origin units by metadata signature — no guessing from the text, and nothing self-serve does this
- ✓extend the signature list with your own MT-engine and pretranslation ids (custom patterns, case-insensitive substring match)
- ✓preview every flagged unit before you commit; keep any that were genuinely post-edited to human quality
- ✓removed.tmx is re-importable, so removing MT contamination is fully reversible if you change your mind
━━ frequently asked
how do you tell a machine-translated unit from a human one?+
by the metadata, not the text. MT engines and pretranslation steps stamp the unit's creationid/changeid (e.g. a 'GoogleMT' or 'DeepL' marker). the engine matches those signatures — you can add your own patterns — and flags matching units as junk_mt_origin. fluent MT is indistinguishable by reading, which is exactly why signature-based detection matters.
what if some MT units were post-edited to human quality?+
you decide per your workflow. the flagged units are shown in the preview before anything is removed; if a batch was properly post-edited and you want to keep it, turn the MT-origin filter off or narrow your signature patterns. nothing is cut until you proceed.
does this only help MT training, or production TMs too?+
both. for a delivery/production TM it keeps your leverage human-quality so un-reviewed machine output can't ship as a 100% match. for MT training data it prevents a model learning from earlier machine output. this page is about the former; see clean a TMX for MT training for the training-data angle.
━━ also clean
free tier · pay-as-you-go after · no subscription · see pricing