Skip to converter

ODT to TXT — sort the formatting into what travels, flattens and must be rebuilt

A policy written in LibreOffice has to be loaded into a system that accepts nothing but plain text. The conversion reads the OpenDocument container and writes the paragraph text in document order. Before importing, sort the document's formatting into three buckets: what travels intact, what becomes a plain line, and what has to be re-created by a person.

Page layout, fonts, margins, headers, footers and page breaks are not reproduced: the text stream is reflowed, not re-laid-out.

Drop files here or ODT, up to 8 MB
    Add a file to start.

    Processed on your device. Files aren’t sent anywhere.

    No sign-up. Nothing to install.

    Three buckets for formatting

    OpenDocument stores style names, numbering and table grids alongside the text. A text file has one channel, so most of that information has nowhere to go.

    BucketFormatting involvedOutcome in the TXT
    Travelsparagraph text, words, punctuation, accentskept as characters in document order
    Flattensheading styles, list numbering, table gridsbecomes plain lines with no level, number or column
    Recreateclause numbering, cross-references, figure captionsabsent; a person restores it in the imported copy
    Droppedimages, charts, fonts, margins, page breaksnot copied; a text file cannot hold them

    Numbering that disappears

    A numbered clause list such as 4.2.1, 4.2.2 arrives as unnumbered lines. Any sentence inside the policy that says as set out in clause 4.2.1 now points at nothing, because the label is gone from the text.

    If your destination depends on those labels, restore them after conversion — either by renumbering in the importing system or by inserting the numbers into the text before upload. Extraction does not preserve list numbering; that is a formatting decision, not a bug in the reader.

    Tables flattened into lines

    A two-column comparison in the policy becomes one column of lines. Each cell is emitted separately, so a row of two cells becomes two lines and the pairing has to be inferred from order.

    • Cell text is kept; the grid is not.
    • A header row looks like any other row once converted.
    • A cell containing a long paragraph produces a long line, which can wrap in the importing system.
    • Empty cells produce no text, so a row can appear shorter than expected.
    • Where the pairing matters, convert to HTML instead and let the receiving system read a real table.

    Repairing the plain-text copy

    Do the repair pass on the converted file, not on the original, so you know exactly what the destination received.

    1. Convert the .odt and download the .txt.
    2. Search for one clause heading you know exists; if it is present, extraction worked.
    3. Restore clause numbering where cross-references depend on it.
    4. Re-pair flattened table rows if the destination needs columns.
    5. Check the character count against the 400000-character output cap.
    6. Upload the repaired copy and re-read it inside the destination system.

    Questions about the flattened document

    Does ODT to TXT keep the numbered clause list?
    No. List numbering is formatting, and plain text has no counterpart for it. The clause text arrives as unnumbered lines; restore labels if references depend on them.
    Are footnotes included?
    Plain text extracts the body stream. Footnote handling depends on the output format: HTML output can carry linked notes, so use that direction when notes matter.
    What happens to the comparison table?
    Each cell becomes its own line, so a two-column row becomes two lines and the column pairing is lost. Convert to HTML if the receiving system can read a table.
    Is the file uploaded somewhere?
    No. The container is parsed inside the browser tab with vendored libraries, macros and scripts are never executed, and no remote request is made.

    Share this converter

    More sharing options