Free online tool

Lexical JSON to ODT converter

Paste a Lexical SerializedEditorState and generate a valid OpenDocument Text file — instantly, in your browser.

Nothing is sent to any server
🖥️

Best on a larger screen

This tool needs a wider display for the side-by-side input and preview panes. Please come back on a desktop or laptop browser to use it.

The generated .odt file displays correctly in LibreOffice, OnlyOffice, Collabora, MS Word, and other ODF applications. The preview shown here is a simplified rendering that may not match those applications exactly.

Saved files this session

    Filenames are as requested — your browser may add (1), (2), etc. to avoid overwriting existing files in your downloads folder.

    How it works

    Private, fast, free

    Conversion runs entirely in your browser — no server, no account, no file size limits.

    🔒 Fully private

    Your JSON never leaves your browser. No network requests are made during conversion. Works offline after the page loads.

    ⚡ Instant conversion

    Conversion runs in milliseconds using odf-kit's pure JavaScript library. No waiting for upload or server processing.

    📋 What is supported

    Paragraphs with alignment, headings h1–h6, bold, italic, underline, strikethrough, subscript, superscript, inline code, text color, highlight color, links, bullet and numbered lists with nesting, tables with colspan and rowspan, blockquotes, code blocks, images with captions and alt text, and horizontal rules.

    🆓 Free, always

    No character limits, no conversions per day, no sign-up required. Powered by open source odf-kit.

    🛡️ Spec-compliant

    Output passes the OASIS ODF validator without errors or warnings — enforced on every commit by CI. Round-trips cleanly through LibreOffice, OnlyOffice, Collabora, and MS Word.

    Need Lexical → ODT in your app?

    odf-kit is a free, open source JavaScript library. lexicalToOdt() converts any Lexical SerializedEditorState to a valid .odt file in Node.js or the browser. No server, no LibreOffice.

    Read the guide npm install odf-kit
    // The same code powering this tool import { lexicalToOdt } from "odf-kit/lexical"; // editor.getEditorState().toJSON() const bytes = await lexicalToOdt(editorState, { pageFormat: "A4", }); // bytes → Uint8Array, save as .odt file
    ← landing page
    /odf-kit/

    More odf-kit tools & guides

    Tools

    Generate

    Read

    Guides

    Generation

    Templates

    Conversion

    Reference