TMX (Translation Memory eXchange) is the standard XML format for moving a translation memory between CAT tools, storing each translation unit as a source segment and its translations with language codes.
A TMX file is plain XML. A header names the tool that created the file and the source language. The body holds the translation units: each one has a variant per language, marked with a language code such as en-US or es-ES, and the text of the segment. A unit can also carry its creation and change dates, the user who created it and custom properties, such as client or project. Inline formatting, such as bold text or a link inside a sentence, is kept as tags.
The format was created by the Localization Industry Standards Association (LISA). Version 1.4b is the one that virtually every CAT tool reads and writes.
CAT tools work with their own memory formats, such as Trados's .sdltm or memoQ's internal TMs, and use TMX to import and export them. So TMX is the format you send to a client, receive from an agency, or keep as a backup that does not depend on any vendor. It holds translated segments; bilingual working files are XLIFF, and terminology goes in TBX.
Two agencies send you their memories for the same client, one from Trados and one from memoQ. You export or receive both as TMX, merge them into one file with duplicates removed, check that the language codes match, and import the result into your CAT tool. From then on, every project for that client starts with all of its previous translations.
A TMX file opens in any text editor, but a large one is hard to read that way. TraduQ's free browser tools handle the common jobs without uploading your memory: the TMX editor to fix units one by one, the TMX to Excel converter, merge and split, and the TM cleaner for duplicates, empty units and conflicting translations. See how to merge TMX files and how to clean a TMX.