Neatbo.

TMX language-pair and variant export

Export explicitly selected TMX language pairs to TSV while preserving all alternatives, metadata and mixed inline content in a complete report and exact original.

Browser-local processingInputTMX 1.4, UTF-8 / UTF-16 BOMOutputTSV / JSON / originalUp to 2 MiB per file · File limit: 1
  1. 1Add input
  2. 2Adjust settings
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

or drag and drop it here

Files stay on this device. Your originals stay unchanged.

Up to 2 MiB per file · File limit: 1

    0 characters · 0 bytes
    Options

    Complete the required options first. You can keep the defaults for the rest.

    Preparing the tool…

    Before you start

    Inspect the full translation memory before choosing a unique pair. Exact locale selection avoids silent fallback; missing and repeated variants remain visible rather than being guessed.

    How to use this tool

    1. Choose a complete TMX file or paste UTF-8 XML. Set the exact source and target locale names.
    2. Run the export and inspect paired, ambiguous and missing unit counts; review all alternatives in the complete report.
    3. Download pairs.tsv, report.json and original.tmx together. Use TSV for derived text, not as a replacement for native inline codes.

    Supported inputs and limits

    One TMX1.4 file up to2MiB, up to2,000 translation units,10,000 language variants,30,000 XML element nodes and XML depth64. Explicit locale names each allow64 UTF-16 units. Complete original, JSON and TSV together must fit10MiB; all limits apply together.

    Files are recognized from their content, not extension. Fatal UTF-8 or UTF-16LE/BE with BOM and a matching XML1.0 encoding declaration are supported. Paste is UTF-8 text. A UTF-16 file is kept as raw bytes until its parser decodes it; invalid Unicode and encoding conflicts fail atomically.

    Source and target locale names are exact and case-sensitive, with no fallback or canonicalization. Only one source and one target variant yield text. Repeated locale variants are ambiguous; missing source, target or both stay visible with blank paired text. All alternatives remain in full JSON.

    Supports declared tmx/header/body/tu/tuv/seg/note/prop/ude/map containers and bpt/ept/it/ph/hi/sub inline profile. Derived text excludes native code data and includes hi/sub translatable text. Complete node order, attributes, mixed text/comments and paired bpt/ept remain in JSON. UDE mappings are retained but not applied.

    The exact literal SYSTEM tmx14.dtd is retained without loading it. Other DTDs, entity declarations, processing instructions, ut and custom elements are Unsupported. This is not DTD validation, TMX Level2 compliance, machine translation or validation of unknown attributes. XML1.0 text/attribute normalization applies to JSON; exact original bytes remain downloadable.

    TSV contains every TU status and protects formula-like cells with an apostrophe; retain JSON/original for unmodified values and code data. Table preview is first200 rows and2,000 UTF-16 units per long cell. Above20,000 units, copied text is a report preview; complete downloads retain every node, variant and pair.

    Worked example

    Example input

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE tmx SYSTEM "tmx14.dtd"><tmx version="1.4"><header creationtool="Prototype" creationtoolversion="1" segtype="sentence" o-tmf="TMX" adminlang="EN-US" srclang="EN-GB" datatype="PlainText"/><body><tu><tuv xml:lang="EN-GB"><seg>First source sentence.</seg></tuv><tuv xml:lang="ES-ES"><seg>Primera oración.</seg></tuv></tu><tu><tuv xml:lang="EN-GB"><seg>Second source sentence.</seg></tuv><tuv xml:lang="ES-ES"><seg>Segunda oración.</seg></tuv></tu><tu><tuv xml:lang="EN-GB"><seg>Third source sentence.</seg></tuv><tuv xml:lang="ES-ES"><seg>Tercera oración.</seg></tuv></tu></body></tmx>
    Example options
    {"secondary":"","params":{"sourceLocale":"EN-GB","targetLocale":"ES-ES"}}

    Example output

    {"profile":"TMX1.4 container and declared inline structure, not TMX Level2 compliance or DTD validation","encoding":"UTF-8","declaredEncoding":"UTF-8","sourceLocale":"EN-GB","targetLocale":"ES-ES","localeMatch":"exact-case-sensitive","originalBytes":632,"nodes":[{"index":0,"name":"tmx","uri":"","attributes":[{"name":"version","local":"version","uri":"","value":"1.4"}],"content":[{"type":"node","index":1},{"type":"node","index":2}]},{"index":1,"name":"header","uri":"","attributes":[{"name":"creationtool","local":"creationtool","uri":"","value":"Prototype"},{"name":"creationtoolversion","local":"creationtoolversion","uri":"","value":"1"},{"name":"segtype","local":"segtype","uri":"","value":"sentence"},{"name":"o-tmf","local":"o-tmf","uri":"","value":"TMX"},{"name":"adminlang","local":"adminlang","uri":"","value":"EN-US"},{"name":"srclang","local":"srclang","uri":"","value":"EN-GB"},{"name":"datatype","local":"datatype","uri":"","value":"PlainText"}],"content":[]},{"index":2,"name":"body","uri":"","attributes":[],"content":[{"type":"node","index":3},{"type":"node","index":8},{"type":"node","index":13}]},{"index":3,"name":"tu","uri":"","attributes":[],"content":[{"type":"node","index":4},{"type":"node","index":6}]},{"index":4,"name":"tuv","uri":"","attributes":[{"name":"xml:lang","local":"lang","uri":"http://www.w3.org/XML/1998/namespace","value":"EN-GB"}],"content":[{"type":"node","index":5}]},{"index":5,"name":"seg","uri":"","attributes":[],"content":[{"type":"text","value":"First source sentence."}]},{"index":6,"name":"tuv","uri":"","attributes":[{"name":"xml:lang","local":"lang","uri":"http://www.w3.org/XML/1998/namespace","value":"ES-ES"}],"content":[{"type":"node","index":7}]},{"index":7,"name":"seg","uri":"","attributes":[],"content":[{"type":"text","value":"Primera oración."}]},{"index":8,"name":"tu","uri":"","attributes":[],"content":[{"type":"node","index":9},{"type":"node","index":11}]},{"index":9,"name":"tuv","uri":"","attributes":[{"name":"xml:lang","local":"lang","uri":"http://www.w3.org/XML/1998/namespace","value":"EN-GB"}],"content":[{"type":"node","index":10}]},{"index":10,"name":"seg","uri":"","attributes":[],"content":[{"type":"text","value":"Second source sentence."}]},{"index":11,"name":"tuv","uri":"","attributes":[{"name":"xml:lang","local":"lang","uri":"http://www.w3.org/XML/1998/namespace","value":"ES-ES"}],"content":[{"type":"node","index":12}]},{"index":12,"name":"seg","uri":"","attributes":[],"content":[{"type":"text","value":"Segunda oración."}]},{"index":13,"name":"tu","uri":"","attributes":[],"content":[{"type":"node","index":14},{"type":"node","index":16}]},{"index":14,"name":"tuv","uri":"","attributes":[{"name":"xml:lang","local":"lang","uri":"http://www.w3.org/XML/1998/namespace","value":"EN-GB"}],"content":[{"type":"node","index":15}]},{"index":15,"name":"seg","uri":"","attributes":[],"content":[{"type":"text","value":"Third source sentence."}]},{"index":16,"name":"tuv","uri":"","attributes":[{"name":"xml:lang","local":"lang","uri":"http://www.w3.org/XML/1998/namespace","value":"ES-ES"}],"content":[{"type":"node","index":17}]},{"index":17,"name":"seg","uri":"","attributes":[],"content":[{"type":"text","value":"Tercera oración."}]}],"headerNode":1,"units":[{"ordinal":0,"unitNode":3,"status":"paired","variants":[{"variantNode":4,"segmentNode":5,"locale":"EN-GB","derivedText":"First source sentence.","inlineNodeSequence":[]},{"variantNode":6,"segmentNode":7,"locale":"ES-ES","derivedText":"Primera oración.","inlineNodeSequence":[]}],"sourceVariantNodes":[4],"targetVariantNodes":[6]},{"ordinal":1,"unitNode":8,"status":"paired","variants":[{"variantNode":9,"segmentNode":10,"locale":"EN-GB","derivedText":"Second source sentence.","inlineNodeSequence":[]},{"variantNode":11,"segmentNode":12,"locale":"ES-ES","derivedText":"Segunda oración.","inlineNodeSequence":[]}],"sourceVariantNodes":[9],"targetVariantNodes":[11]},{"ordinal":2,"unitNode":13,"status":"paired","variants":[{"variantNode":14,"segmentNode":15,"locale":"EN-GB","derivedText":"Third source sentence.","inlineNodeSequence":[]},{"variantNode":16,"segmentNode":17,"locale":"ES-ES","derivedText":"Tercera oración.","inlineNodeSequence":[]}],"sourceVariantNodes":[14],"targetVariantNodes":[16]}],"variantsTotal":6,"inlineCodes":0,"pairedNodes":[],"doctypes":[{"literal":" tmx SYSTEM \"tmx14.dtd\"","externalDTDLoaded":false}],"warnings":[],"spreadsheetSafe":true,"tsvProjection":"Spreadsheet formula prefixes are protected with a leading apostrophe. Only unique paired variants yield source/target text. Native code data excluded; subflow/hi text included. Alternatives/metadata retained in full JSON and exact original. XML1.0 line-ending/attribute normalization applies to JSON text."}

    When something does not work

    Confirm exact locale names and provide a complete supported TMX1.4 export. Keep UTF-16 BOM and matching declaration intact; use a raw file rather than pasting undecoded bytes. Correct missing/ambiguous variants in the source. Reduce input or full-output size after a limit; cancellation exposes no partial TSV.

    Frequently asked questions

    Does en-gb match EN-GB?

    No. Match is exact and case-sensitive. Select the locale present in the source; the tool does not infer fallback.

    What happens to repeated target variants?

    The TU is marked ambiguous, paired TSV text is blank, and every alternative remains in the complete JSON and original.

    Are inline codes translated or discarded?

    Neither. Native code data remains in JSON/original; derived TSV excludes it while including hi/sub text. UDE mappings are preserved but not executed.

    Documentation & further reading

    Related tools