What Is an ODT File? How to Check an OpenDocument Text File Before You Trust It
ODT files store a document as a ZIP package of XML parts, and five readers still disagreed on 196 of 1,583 test files. Jump to your question below, or work through it in order.
What Is an ODT File? A word processor file that is a ZIP package of XML parts
Short answer
An ODT file is a word processor document in the OpenDocument Text format, and it is a ZIP package of XML parts. It starts with the ZIP signature 50 4b 03 04. Its first entry, named mimetype, stores the text application/.
We read 1,583 ODT files with five readers. We also damaged one ODT file in 48 ways. All five readers opened 1,384 ODT files and refused 3, and they split on 196. Of the 48 damaged copies, all three decoders refused 14, and only 10 gave the same text as the intact file in all three.
To check ODT files without a word processor, read the check steps. To see what is inside, read the layout. If your ODT file will not open, begin with the eight causes.
An ODT file is a word processor document in the OpenDocument Text format. It is a ZIP package of XML parts, and its first entry, mimetype, names the type. The ending .odt is only a label, because the first entry decides what a file is.
Picture a letter saved as letter.odt in LibreOffice Writer. A text editor shows the letters PK near the start and then odd symbols, because an ODT file is a ZIP package and not a page of text. The words, the styles and the pictures are stored in separate parts of the package.
Wikipedia describes OpenDocument as an XML based format from the OASIS standards group, built on the OpenOffice.org XML specification from Sun Microsystems. It says an .odt file is a ZIP archive of XML files and folders that can also store binary content like pictures.
Wikipedia lists the versions with their dates. OASIS approved ODF 1.0 on 1 May 2005, ODF 1.1 on 1 February 2007 and ODF 1.2 on 29 September 2011. It lists ODF 1.3 for April 2021 and ODF 1.4 for 3 December 2025.
The IANA registry lists the type application/ with the ending .odt. It names three marks, PK at byte 0, the word mimetype at byte 30 and the type itself at byte 38. The entry was created on 31 May 2006 and last updated on 7 June 2022.
The UK National Archives lists the format in PRONOM as OpenDocument Text 1.3. Its signature looks in the manifest for the media type and in content.xml for the version number. The signature came with release V108 on 5 September 2022.
FileInfo names OASIS as the developer and says LibreOffice Writer and Apache OpenOffice Writer mainly use ODT files. It also lists two other file types that use the same ending, an Origin dialog theme and an OOMMF data table. So the ending alone can mislead.
Where our ODT files come from
Our 1,583 ODT files come from the test folders of six public projects. Counted by the project where we met a file first, LibreOffice core gave 1,368, the ODF Toolkit 75, pandoc 54, OpenOffice 48, odfpy 21 and Apache Tika 17. We collected 1,716 ODT files and removed 133 copies with the same SHA-256 hash.
Many are built to be odd, so they include cases that a normal ODT file does not. The 1,583 files total 43,517,573 bytes and range from an empty file to 3,888,830 bytes, with a median of 11,033. The biggest package has 1,186 entries, and the median has 17.
The ending is no guide. We saved a valid ODT file under 7 other names, like .docx, .txt and .zip, and we gave 12 other files the name .odt. The tests below also use 48 damaged ODT files made from one 69,376 byte ODT file.
ODT file facts at a glance
| Property | Value |
|---|---|
| Meaning | OpenDocument Text. FileInfo lists OASIS as the developer. |
| Ending | .odt. Wikipedia lists .fodt as the flat XML version of the same format. |
| First bytes |
50 4b 03 04, the ZIP signature. IANA lists PK at byte 0, mimetype at byte 30 and the type at byte 38. 1,469 of our 1,583 ODT files match all three.
|
| Type |
application/, registered with IANA.
|
| Structure | A ZIP package. The first entry is mimetype, stored without compression, then XML parts like content.xml, styles.xml and meta.xml, per Wikipedia. |
| Compression | ZIP deflate for the XML parts. In our example file the XML shrank by 53 to 86 percent, and the two PNG pictures were stored as they are. |
| Versions | ODF 1.0 to 1.4. 829 of our 1,580 ZIP based ODT files are ODF 1.2, and 473 are ODF 1.3. |
| Content | Text, images, tables, charts and drawn objects, per FileInfo. 299 of our ODT files have a table, and 254 store a picture. |
| Opens with | FileInfo lists LibreOffice, Apache OpenOffice and Microsoft Word 365 on Windows and Mac. We tested five readers on 1,583 ODT files. |
| Our tests | 1,583 ODT files, 48 damaged ODT files, 19 renamed or mislabeled files and one ODT file converted 7 ways. |
Wrong page? A document that ends in .docx is a different format. See the DOCX file page.
What Is Inside an ODT File? A mimetype entry first, then the parts it names
An ODT file is a ZIP package. The mimetype entry comes first and is stored without compression, then XML parts like content.xml store the text. Our example, base.odt, is 69,376 bytes long with 16 entries, and its picture and thumbnail make up 86 percent of the bytes.
We built one ODT file with LibreOffice 24.2.7.2, so every byte can be read. It has a heading, a paragraph with bold and italic words, a list of 3 items, a table of 4 rows and a picture that is 200 by 120 pixels. The figure shows its parts from the outside in.
Read the figure from the top. The first check in an ODT file is the mimetype entry. Wikipedia says it is always the first file entry in the ZIP archive and is stored uncompressed, so a reader can name the format without unpacking anything.
The start of an ODT file, byte by byte
xxd -l 80 base.odt
00000000: 504b 0304 1400 0008 0000 3b4b 5c5d 5ec6 PK........;K\]^.
00000010: 320c 2700 0000 2700 0000 0800 0000 6d69 2.'...'.......mi
00000020: 6d65 7479 7065 6170 706c 6963 6174 696f metypeapplicatio
00000030: 6e2f 766e 642e 6f61 7369 732e 6f70 656e n/vnd.oasis.open
00000040: 646f 6375 6d65 6e74 2e74 6578 7450 4b03 document.textPK.
Bytes 0 to 3, 50 4b 03 04, are the ZIP signature for one entry. Bytes 8 and 9, 00 00, say the entry is stored and not compressed. Bytes 18 to 21, 27 00 00 00, give its size, which is 39. ZIP writes numbers with the low byte first.
Bytes 26 and 27, 08 00, give the length of the name, which is 8. Bytes 28 and 29, 00 00, say there is no extra field. Bytes 30 to 37 spell mimetype, and bytes 38 to 76 spell application/.
That layout is the same three marks that IANA lists. PK is at byte 0, the word mimetype is at byte 30 and the type is at byte 38. 1,469 of our 1,583 ODT files match all three. The next entry starts at byte 77 with 50 4b 03 04 again.
The check value is in bytes 14 to 17, 5e c6 32 0c, which is 0c32c65e when read with the high byte first. The unzip listing below prints the same CRC-32 for the mimetype entry.
The parts in base.odt, entry by entry
unzip -v base.odt
-------- ------ ------- ---- ---------- ----- -------- ----
39 Stored 39 0% 2026-10-28 09:25 0c32c65e mimetype
0 Stored 0 0% 2026-10-28 09:25 00000000 Configurations2/toolpanel/
0 Stored 0 0% 2026-10-28 09:25 00000000 Configurations2/floater/
0 Stored 0 0% 2026-10-28 09:25 00000000 Configurations2/statusbar/
0 Stored 0 0% 2026-10-28 09:25 00000000 Configurations2/toolbar/
0 Stored 0 0% 2026-10-28 09:25 00000000 Configurations2/progressbar/
0 Stored 0 0% 2026-10-28 09:25 00000000 Configurations2/popupmenu/
0 Stored 0 0% 2026-10-28 09:25 00000000 Configurations2/menubar/
17679 Defl:N 2728 85% 2026-10-28 09:25 de77274f styles.xml
899 Defl:N 261 71% 2026-10-28 09:25 d268f7b4 manifest.rdf
13716 Defl:N 2235 84% 2026-10-28 09:25 f05d8d56 content.xml
884 Defl:N 419 53% 2026-10-28 09:25 1e30b26c meta.xml
12188 Defl:N 1745 86% 2026-10-28 09:25 aec926f9 settings.xml
50502 Stored 50502 0% 2026-10-28 09:25 b7b2912a Pictures/10000000000000C80000007871458BFA.png
9124 Stored 9124 0% 2026-10-28 09:25 8a057df6 Thumbnails/thumbnail.png
1184 Defl:N 331 72% 2026-10-28 09:25 64ba1c5c META-INF/manifest.xml
-------- ------- --- -------
106215 67384 37% 16 files
The listing shows 16 entries. The mimetype entry is first and stored. Seven empty folders under Configurations2 come next, then styles.xml, manifest.rdf, content.xml, meta.xml and settings.xml. The picture, the thumbnail and META-INF/manifest.xml come last.
The XML parts shrink a lot. content.xml goes from 13,716 to 2,235 bytes, which is 84 percent, and styles.xml from 17,679 to 2,728. The two PNG files do not shrink at all, because a PNG file is already compressed. Together they make 59,626 of the 69,376 bytes.
That sum is why a small letter can still be a big file. In our 1,479 ODT files with a thumbnail, the thumbnail is the biggest entry in 335 and at least half of the ODT file in 82. Across all the packages it makes up 11.7 percent of the bytes.
The parts we found in 1,580 ZIP based ODT files
| Part | What it stores and how many files have it |
|---|---|
mimetype
|
The type of the package, as plain text. 1,572 of our files say text, 1 says text-template and 7 say something else or are empty. It is the first entry in 1,489 files and stored in 1,562. |
META-INF/
|
A list of every part with its media type, and the encryption details of any locked part. 1,578 of our 1,580 ZIP files have one. |
content
|
The words, tables, lists and frames of the document, without the binary data. 1,575 files have one, and it stores the office:version number. |
styles
|
Paragraph, page, character and list styles. 1,572 files have one. |
meta.xml
|
The author, the dates and the program that wrote an ODT file. 1,570 files have one. |
settings
|
View settings like the zoom and the cursor spot. 1,565 files have one. |
Thumbnails/
|
A small preview of the first page. 1,479 files have one. Only 4 are 128 by 128 pixels, and the most common size is 181 by 256, in 650 files. |
Pictures/
|
Pictures used in the document. 254 files store at least one. |
Object 1/
|
An embedded object like a chart or a formula. 105 files have one or more. |
Basic/
|
Basic macros. 50 files store them, and 1 has a Scripts folder. |
documentsignatures
|
A digital signature. 73 files are signed, and 10 are encrypted. |
| Folder entries | Zero byte entries that end in a slash, like Configurations2/. 1,536 files have them, and our script does not need them. |
How the ZIP directory closes the ODT file
A ZIP file ends with a central directory that lists every entry. A reader starts there, finds the names and jumps to the part it wants. We removed the end record from one copy and zeroed the directory in another. All three decoders refused both, even though the bytes of every part were still there.
The list is small. Our script reads the ZIP names, the mimetype entry and the XML parts. It does not read styles or pictures, so damage deeper in an ODT file can pass it, as the damaged copies show.
Which Kind of ODT File Do You Have? The ending names none of the versions, makers or extras
Four questions sort an ODT file. Which ODF version wrote it, which program made it, what extra parts are packed in it and what the text contains. Of 1,580 ZIP based ODT files, 829 are ODF 1.2 and 473 are ODF 1.3. The ending names none of this.
Most questions about ODT files come down to the version and the program. The package answers both without opening a word processor, because meta.xml names the program and content.xml names the version.
ODF version
The version is the office:version value in the first tag of content.xml. In our 1,580 ZIP files, 829 say 1.2 and 473 say 1.3. ODF 1.4 appears in 129, ODF 1.0 in 95 and ODF 1.1 in 19. The other 35 have no readable version.
The Microsoft 365 blog says Word, Excel and PowerPoint in Microsoft 365 now save ODF files only in ODF 1.4, from version 2404 on Windows and 16.84 on Mac. It adds that files in ODF 1.3 and earlier still open, but they are saved as 1.4.
The program that made it
The meta.xml part stores a generator line. In our files, 1,182 name LibreOffice, and 745 of those name a development build. StarOffice appears in 99 files, OpenOffice.org in 93, OpenOffice in 41, Collabora in 33 and IBM Lotus Symphony in 24. 33 files name no program.
That mix reflects the folders we used, because most come from the LibreOffice project. 9 files name MicrosoftOffice as the generator, and all five readers opened all 9. We made no ODT file in Word ourselves.
Extra parts
1,479 of our 1,580 ZIP files store a thumbnail, and 254 store at least one picture. 105 have an embedded object. 73 are signed, 50 store Basic macros and 10 are encrypted. A package can store all of these in one file.
What the text contains
Tables appear in 299 files and frames in 434. Lists appear in 253, sections in 122, tracked changes in 69 and fields in 62. 50 have comments, 59 have web links, 49 have a table of contents and 2 point to a picture outside the ODT file.
The metadata is worth a look before you share a file. 614 of the 1,570 files with a meta.xml name a creator. 1,495 store a creation date, and 1,513 store an editing time. 141 have a title.
Not sure the ODT file is an ODT file at all? Check it with our script.
What Did We Find in 1,583 ODT Files? Five readers, and a split on 196 files
We read 1,583 ODT files from six public projects with five readers. pandoc opened 1,547, LibreOffice 1,546, odfpy 1,487, the file command 1,468 and our script 1,466. All five opened 1,384 ODT files together. None opened 3, and 196 split the readers.
We took 1,583 ODT files from the test folders of LibreOffice, OpenOffice, the ODF Toolkit, pandoc, odfpy and Apache Tika. They are public test files and not a sample of the ODT files on a typical PC. Many are odd on purpose.
The readers were the file command 5.45, pandoc 3.1.3, odfpy 1.4.1 and LibreOffice 24.2.7.2. We also wrote a 43 line Python script. We worked on Linux with Python 3.13, and we opened no ODT file in Microsoft Word, in LibreOffice on Windows, in TextEdit or in Google Docs.
A reader counted as opening an ODT file when it did its job. The file command had to print OpenDocument Text, and our script had to pass every check. pandoc had to convert an ODT file to text, odfpy had to load the package and LibreOffice had to convert it to a text file.
| Test | Result |
|---|---|
| Opened | pandoc opened 1,547 of 1,583 ODT files, LibreOffice 1,546, odfpy 1,487, the file command 1,468 and our script 1,466. |
| Together | All five readers opened 1,384 ODT files. None opened 3, and the readers split on 196. |
| Decoders only | The three decoders, without the file command and our script, all opened 1,464 ODT files, none opened 18 and they split on 101. |
| Script passed | Our script passed 1,466 ODT files. All five readers opened 1,384 of them, and 82 split the readers. odfpy alone refused 55 of those 82. |
| Entry out of place | The mimetype entry is not first in 91 ODT files. The file command and our script opened none of them, pandoc opened 87, LibreOffice 81 and odfpy 72. |
| Encrypted | The file command named all 10 encrypted ODT files OpenDocument Text. Our script, pandoc and LibreOffice opened 1 apiece, and odfpy opened 2. |
| Sizes | From an empty file to 3,888,830 bytes. The median is 11,033, and the 1,583 ODT files total 43,517,573 bytes. |
All five readers opened 1,384 of the 1,583 ODT files. Three files were opened by none. The other 196 split the readers.
In 89 of them the mimetype entry is out of place, and in 61 odfpy refused a line in the manifest or in a formula object. Six files have both, so two causes cover 144 of the 196.
The 196 ODT files that split the readers
The file command and our script are strict about the mimetype entry. pandoc, LibreOffice and odfpy are not. So a file with the entry out of place splits the readers, even though LibreOffice opened 81 of the 91 files that have it out of place.
The other 52 splits have mixed causes. In 10 only the file command refused an ODT file. In 11 the file command opened it while our script and all three decoders refused it. A split is a reason to look at your ODT file, and not a verdict on it.
Why the file command refused 115 ODT files
The file command refused 115 of the 1,583 ODT files. For 103 of them it printed Zip archive data, and that includes all 91 files with the mimetype entry out of place.
For 8 more it printed Zip data with a garbled MIME type, and those are the 8 files whose mimetype entry is compressed. One refusal was a template, one was ASCII text, one was data and one was empty.
So the label from the file command depends on the start of an ODT file. It is the quickest check and the strictest one, because it reads no further than the mimetype entry. A pass says little about the parts after it.
Why odfpy refused 96 ODT files
odfpy refused 96 of the 1,583 ODT files. 61 failed with an ExternalReferenceForbidden error. In 55 of them the manifest starts with a DOCTYPE line that points to Manifest.dtd outside the package, and all 55 are ODF 1.0 files. The other 6 point to a formula DTD inside an embedded object.
ODF 1.0 files are 95 of our set. odfpy refused 56 of them, while pandoc and LibreOffice opened 91. Most of the other refusals name a part that the package does not store, like a thumbnail or a Configurations2 folder. We tested odfpy 1.4.1 only, and other versions can differ.
What an encrypted ODT file does
The file command opened all 10 encrypted ODT files, because it reads only the start. The other readers had to read the content. Our script, pandoc and LibreOffice opened 1 apiece, and odfpy opened 2. An encrypted package still lists its parts in the manifest, with the details a reader needs to unlock them.
Read the study with care. It shows what five readers do with 1,583 public test files. Many are odd on purpose, and 1,368 come from one project. A reader that agrees on our files can still fail on your ODT file. We opened none of them in Microsoft Word.
What Do Readers Do With a Damaged ODT File? 48 broken copies, three decoders and 23 split decisions
We damaged one 69,376 byte ODT file in 48 ways. All three decoders refused 14 damaged copies, and 10 came back with the same text in all three. They split on 23, and 4 copies gave different text in at least one decoder. pandoc opened 26 copies, odfpy 21 and LibreOffice 19.
The 48 damaged ODT files are copies of base.odt and come in six groups. Group A damages the ZIP container and B the mimetype entry. C changes the manifest, D the content and E the other parts. F changes single bytes. Every damaged ODT file changes one thing.
We asked two questions about every damaged ODT file. Did the three decoders open it? And did they return the same text as the intact file? The second question is the strict one, and we compared a hash of the text every decoder returned. We did not compare pictures or styles.
The 14 copies that every decoder refused
Copies A1 to A7 cut the ODT file to 5, 15, 30, 50, 70, 90 and 98 percent of its bytes. All three decoders refused all seven, and so did our script. The file command still named all seven OpenDocument Text, because the start of the ODT file was intact.
A8 removes the ZIP end record, A9 zeroes the central directory and A12 sets the last 100 bytes to ff. All three decoders refused all three. A ZIP reader needs the end of an ODT file before it can find any part.
D3 cuts content.xml in half, D8 puts 200 zero bytes in the middle of it and D9 flips one byte inside its compressed data. All three decoders refused all three. F4 writes the entry names in capital letters, and all three refused that copy too.
The 10 copies that every decoder read the same
A10 adds 100 junk bytes after the end of the ODT file. B1 removes the mimetype entry, B2 moves it to the end and B3 compresses it. All three decoders returned the intact text from all four copies.
D10 sets the CRC of content.xml to zero in its local header. E2 and E3 remove meta.xml and settings.xml, E4 replaces the picture with junk and E8 removes the folder entries. F1 stores every entry without compression. All three decoders returned the intact text from these six copies too.
The file command and our script disagree with the decoders here. Both refused B1, B2 and B3, yet all three decoders read the text. A flag from a strict check is not proof that the text is lost.
The copies that gave other text
D6 removes the body text from content.xml. All three decoders opened the copy and returned other text. That is a quiet failure, because the ODT file is a valid package with a nearly empty page. Our script passed D6 too, since it checks structure and not words.
D1 removes content.xml and D2 empties it. pandoc and odfpy refused both, but LibreOffice opened them and returned other text. D5 puts a stray < in the text, and only odfpy opened that copy, with other text.
What one decoder reads that the others refuse
pandoc ignores the manifest. It returned the intact text from all five copies with a damaged manifest, C1 to C5. LibreOffice refused all five, and odfpy refused four. pandoc also read B4, B6 and B7, where the mimetype says spreadsheet, is empty or is in capital letters. odfpy and LibreOffice refused all three.
LibreOffice is the only decoder that read D7, where content.xml was saved as UTF-16. odfpy is the only one that read A11, with 100 junk bytes before the first entry, and F2, with one byte of the first header changed.
F5 puts 4 KB of zeros in the picture. pandoc and LibreOffice returned the intact text, and odfpy refused the copy with a bad CRC. Our script refused it for the same reason.
E1 removes styles.xml and E9 empties it. pandoc refused both, and odfpy and LibreOffice returned the intact text. E5 removes the picture and E6 removes the thumbnail. odfpy refused both, and pandoc and LibreOffice returned the intact text. E7 adds an unknown extra file, and only LibreOffice refused it.
What our script passes
Our script flagged 30 of the 48 damaged ODT files and passed 18. It flagged B1, B2 and B3, which all three decoders read, and it passed D6, which all three read as other text. D4 sets the ODF version to 9.9. The script passed it and LibreOffice refused it. pandoc and odfpy returned the intact text.
A flag from the script means a check failed. It does not mean that no reader can return the text, and a pass does not mean that the page is complete.
Read the grid with care. Every copy changes one thing in one ODT file made by LibreOffice. Damage in the wild changes many things at once. Same text means a hash of the text matched the intact file. We compared no pictures or styles, and we opened no copy in Microsoft Word.
What Does Our Expert Say About ODT Files? A note from Neeraj Singh on trusting one reader
Check ODT files with two readers before you trust one answer. Five readers opened 1,384 of 1,583 ODT files together, and three decoders split on 23 of 48 damaged copies. A look at the first entry takes seconds, and a second reader takes a little longer.
Expert insight
“An ODT file looks like one document, but it is a stack of separate parts, and any one part can fail alone. In our tests five readers split on 196 of 1,583 ODT files, and the three decoders gave the same text for only 10 of 48 damaged copies. Check the first entry, the manifest and the content with two readers before you rely on one answer.”
Why one reader proves little
A reader that opens an ODT file shows that it could return something. It does not show that the text is complete or that another reader agrees. In our tests the file command opened all 10 encrypted ODT files, and three decoders opened the copy with its body text removed.
The check has a limit. Two readers that agree can both be wrong, and neither says whether the page looks right. The script from the check reads the ZIP names, the mimetype entry and the XML parts, so compare its answer with a second reader and look at the page.
Copy the ODT file before you open it. Work on the copy and keep the original untouched. A SHA256 hash of the original shows later if a download changed.
How Do You Open an ODT File? Five readers we tested and two viewers from outside pages
Many word processors open ODT files, and Microsoft 365 reads and saves them. We tested five readers on 1,583 ODT files instead. We opened no ODT file in Word, WordPad or TextEdit, so we say nothing about them beyond what FileInfo, Wikipedia and Microsoft list.
The table lists the programs we tested and the ones our sources name. The readers with a version number are the ones we tested. We worked on Linux, so we opened no ODT file in a Windows or Mac app.
| Program | What it does |
|---|---|
| Word processors | FileInfo lists LibreOffice, Apache OpenOffice, Microsoft Word 365 and AbiWord for Windows and Mac. It adds Apple TextEdit for Mac and Calligra Suite for Linux. We tested none of them as an app. |
| Built in programs | Wikipedia lists WordPad on Windows 7 and later, with ODF 1.1 and TextEdit on Mac as partial support. We tested neither. |
| Online editors | Wikipedia lists Google Docs, OnlyOffice and Zoho Office among the programs with full support. We tested none of them. |
| The file command | Version 5.45. It names the type from the first entry and opened 1,468 of 1,583 ODT files. For an ODT file it prints OpenDocument Text. |
| Our script | A 43 line Python script that reads the ZIP names, the mimetype entry and the XML parts. It passed 1,466 of 1,583 ODT files and draws no page. |
| pandoc | Version 3.1.3. It opened 1,547 ODT files, more than any other reader, and it writes plain text, HTML, DOCX and many other formats. |
| LibreOffice | Version 24.2.7.2. It opened 1,546 ODT files in headless mode, where a command converts a file without opening a window. |
| odfpy | A Python library, version 1.4.1. It opened 1,487 ODT files, and its load call reads every part of the package. |
Open ODT files in Microsoft Word
Microsoft says files in ODF 1.3 and earlier still open in Microsoft 365 apps, but Word saves them as ODF 1.4. You choose the type under File, Save As and Save as type. Older Office versions that support only ODF 1.3 can open ODF 1.4 files, but they do not support the new features.
Wikipedia lists the ODF version that every Office release supports. The table gives the answer for a release you still use. We tested none of them, so treat it as a guide and not as a result.
| Release | What the sources say |
|---|---|
| Office 2010 | ODF 1.1, opened and saved natively, with some features missing. Source: Wikipedia. |
| Office 2013 | ODF 1.2, on Windows only. Source: Wikipedia. |
| Office 2016 and 2019 | ODF 1.2. On Windows it reads and writes. On Mac it is read only after an online conversion. Source: Wikipedia. |
| Office 2021 | ODF 1.3, on Windows and Mac. Source: Wikipedia. |
| Office 2024 | ODF 1.4, on Windows and Mac. Source: Wikipedia. |
| Microsoft 365 | Opens ODF 1.3 and earlier and saves ODF 1.4 only, from version 2404 on Windows and 16.84 on Mac. Source: Microsoft. |
So an ODT file from LibreOffice opens in a recent Word, but the round trip changes the version number. In our set, 129 files are ODF 1.4, 473 are ODF 1.3 and 829 are ODF 1.2.
Open ODT files on the command line
Three commands show what an ODT file is. For base.odt, the file command prints the type, pandoc prints the text and a short Python line prints the first entry. The unzip listing in the layout part shows all 16 parts.
file -b base.odt
OpenDocument Text
pandoc -f odt -t plain base.odt | head -n 1
Quarterly test report
python3 -c "import zipfile; z = zipfile.ZipFile('base.odt'); print(z.namelist()[0], z.getinfo('mimetype').compress_type)"
mimetype 0
All three agree. The file command names the type and pandoc prints the heading of the document. Python shows that the first entry is mimetype. Its compression method is 0, which means stored.
Open ODT files with Python
Python reads the package without a library. The zipfile module lists the names, and the first name must be mimetype. A compression method of 0 means the entry is stored.
import zipfile
z = zipfile.ZipFile('base.odt')
i = z.getinfo('mimetype')
print(z.namelist()[0], i.compress_type, z.read('mimetype').decode())
mimetype 0 application/vnd.oasis.opendocument.text
The odfpy package goes further. Its load call reads every part and builds the document, so a package with a missing part fails here and not at the open. It prints the type of the package.
from odf.opendocument import load
d = load('base.odt')
print(d.mimetype)
application/vnd.oasis.opendocument.text
odfpy refused 96 of the 1,583 ODT files and 27 of the 48 damaged copies, so read its answer with care. The damage grid lists the copies where its text differed from the intact file.
Viewers and converters for ODT files
These two links open outside pages for ODT files. Both come from SysTools. We describe them from their own pages and tested neither.
The SysTools ODT Viewer page describes a Windows program that opens ODT files, including corrupted ones. It shows an ODT file in its original formatting, saves it as HTML and prints it. The page names a Download Now button and no price.
The SysTools Document Converter page lists ODT among its source formats and PDF, PDF/A, PDF/X, DOC and DOCX among its outputs. It works on Windows and Mac and converts files in batches. The free version processes the first 5 files and adds a watermark. We list no prices, because they change.
Install a program from its maker. Download a program from the maker's own page, and write down the ODT file hash if the page gives one. FileInfo lists free office suites like LibreOffice and Apache OpenOffice among the programs that open ODT files.
How Do You Check an ODT File? Six steps, and only the last two read the text
Check ODT files in six steps. Read the first 80 bytes, then the ZIP names, then the XML parts with our 43 line script. Only a decoder returns the text. The script flagged 117 of our 1,583 ODT files, and it passed 82 that split the readers.
The first reads need no Python. The xxd command prints bytes, the file command names the type and unzip lists the parts. For base.odt they show the ZIP signature, the mimetype entry and all 16 entries.
xxd -l 80 base.odt
00000000: 504b 0304 1400 0008 0000 3b4b 5c5d 5ec6 PK........;K\]^.
00000010: 320c 2700 0000 2700 0000 0800 0000 6d69 2.'...'.......mi
00000020: 6d65 7479 7065 6170 706c 6963 6174 696f metypeapplicatio
00000030: 6e2f 766e 642e 6f61 7369 732e 6f70 656e n/vnd.oasis.open
00000040: 646f 6375 6d65 6e74 2e74 6578 7450 4b03 document.textPK.
file -b base.odt
OpenDocument Text
Read the first line from the left. Bytes 0 to 3 are the ZIP signature, and bytes 30 to 37 spell mimetype. The type follows from byte 38. The file command prints OpenDocument Text only when the mimetype entry is first and readable.
Step 4 starts with the ZIP names. The script lists them, checks the first entry and then parses the XML parts.
Check ODT files with Python
The script opens the ZIP and reads the names. It checks that the first entry is mimetype, stored and equal to the ODT type. Then it checks that the manifest and content.xml exist and parse, and that every CRC in the ZIP matches.
It prints OK or FLAG, with the version and the number of entries. It never changes an ODT file.
import sys, zipfile
from xml.etree import ElementTree as ET
MIME = 'application/vnd.oasis.opendocument.text'
def peek(path):
try:
return check(path)
except Exception as e:
return False, 'ZIP read failed: ' + type(e).__name__
def check(path):
try:
z = zipfile.ZipFile(path)
except Exception as e:
return False, 'not a ZIP file: ' + type(e).__name__
names = z.namelist()
if not names or names[0] != 'mimetype':
return False, 'the first entry is not mimetype'
info = z.getinfo('mimetype')
if info.compress_type != 0:
return False, 'mimetype is compressed'
mime = z.read('mimetype').decode('ascii', 'replace')
if mime != MIME:
return False, 'mimetype says ' + mime[:40]
for need in ('META-INF/manifest.xml', 'content.xml'):
if need not in names:
return False, need + ' is missing'
try:
ET.fromstring(z.read(need))
except Exception as e:
return False, need + ' does not parse'
bad = z.testzip()
if bad:
return False, 'bad CRC in ' + bad
root = ET.fromstring(z.read('content.xml'))
ver = root.get('{urn:oasis:names:tc:opendocument:xmlns:office:1.0}version', 'none')
return True, 'ODT, version ' + ver + ', ' + str(len(names)) + ' entries'
if __name__ == '__main__':
for p in sys.argv[1:]:
ok, msg = peek(p)
print(('OK ' if ok else 'FLAG ') + p + ': ' + msg)
Here is what it printed for three files. They are base.odt and two other documents made by LibreOffice, a letter and a longer text.
python3 odt_peek.py base.odt letter.odt long.odt
OK base.odt: ODT, version 1.3, 16 entries
OK letter.odt: ODT, version 1.3, 15 entries
OK long.odt: ODT, version 1.3, 15 entries
Every answer starts with OK or FLAG, then the ODT file name, the ODF version and the number of entries. letter.odt and long.odt have 15 entries and base.odt has 16, because base.odt stores a picture.
python3 odt_peek.py A4.odt B2.odt D2.odt fake.odt
FLAG A4.odt: not a ZIP file: BadZipFile
FLAG B2.odt: the first entry is not mimetype
FLAG D2.odt: content.xml does not parse
FLAG fake.odt: not a ZIP file: BadZipFile
A4 is base.odt cut in half, so the ZIP has no end record and the script cannot read it. B2 moves the mimetype entry to the end of the package. D2 empties content.xml. The ODT file fake.odt is a PDF document named .odt, and it fails the first check because it is not a ZIP file.
What the script found in our files
| Result | Cases |
|---|---|
| Passed (1,466 of 1,583) | The first entry is mimetype and stored, the type is right, the manifest and content.xml parse and the ZIP CRCs match. All five readers opened 1,384 of the 1,466, and the other 82 split the readers. |
| Flagged (117 of 1,583) | 91 for the first entry, 10 because content.xml does not parse, 8 for a compressed mimetype entry and 3 for a file that is not a ZIP. 5 had other problems. pandoc and LibreOffice opened 92 of the 117 anyway. |
| Passed, split the readers (82) | odfpy alone refused 55 of the 82, the file command alone 10, LibreOffice alone 5 and pandoc alone 4. Two or three readers refused the other 8. |
| Damaged copies (30 of 48 flagged) | It flagged all 14 copies that every decoder refused. It also flagged B1, B2 and B3, which all three decoders read, and it passed D6, which all three read as other text. |
| Encrypted (1 of 10 passed) | It treats an encrypted file like any other. The file command named all 10 OpenDocument Text, and the three decoders opened 1 or 2 apiece. |
The script has limits. It does not read the words, so a package with the body text removed passes, as D6 shows. It does not repair anything. The damaged ODT files show where decoders disagree about the text.
Check order for any ODT file
- Copy the ODT file, write its SHA256 hash and work on the copy.
-
Read the first 80 bytes of the ODT file. They must start with
50 4b 03 04, and the word mimetype must follow at byte 30. - Name the type with the file command, and list the parts with unzip. The first part must be mimetype.
- Read the ZIP names and the XML parts with our script. A problem names the part where the package stops making sense.
- Convert the text with two decoders, as in the Python example and the command line listing, and compare the words. Only this step reads the text.
- Open the ODT file in a word processor and look at the page, the table and the picture. A package can pass every step above and still show a blank page, as D6 did.
Is an ODT File Safe to Open? A name proves nothing, and a package can store more than text
An ODT file is data, but IANA says OpenDocument files can contain scripts that act for the user. Open files from unknown senders with care. The name proves nothing, and a package can store a creator name, comments and macros. 50 of our 1,580 ZIP based ODT files store Basic macros.
We opened no ODT file with macros enabled and scanned none for malware. The five readers only read bytes and convert text. The ODT files come from public test folders, so their contents are not the worry here.
The IANA entry says OpenDocument files can contain scripts that act on the user's behalf, and that embedded external objects and hyperlinks need careful handling. It adds that ODF 1.0 has no integrity check of its own, though it describes a way to encrypt a package.
The rename test
We saved base.odt under 7 other names, ending in .zip, .docx, .doc, .txt, .ods, .ODT or nothing at all. The file command, our script, pandoc and odfpy opened all 7. LibreOffice opened 6 and refused the .txt name in headless mode, so a name can still matter to one reader.
The reverse also works. We gave 12 other files the ending .odt. They are a Word DOCX file, an old DOC file, an RTF file, a PDF file and a text file. The rest are a flat XML FODT file, an OTT template, an HTML page, an ODS spreadsheet, a PNG picture, a ZIP archive and an empty file.
The file command named the true type of all 12, and our script refused all 12. pandoc and odfpy opened only the OTT template. LibreOffice opened 8 and refused the PDF, PNG, ZIP and ODS files. It converts other word processor formats by their content, so a pass from LibreOffice does not prove that a file is an ODT file.
If your file manager hides endings, read the first bytes of anything you doubt. A valid ODT file starts with 50 4b 03 04, and the word mimetype follows at byte 30.
Metadata in an ODT file
The meta.xml part stores the creator, the dates, the editing time and the program. 614 of the 1,570 files that have it name a creator. 1,495 store a creation date, and 1,513 store an editing time. 141 store a title, and 38 store keywords or a subject.
Tracked changes appear in 69 files and comments in 50. Both can stay in a file after you think the text is final. The package also stores a small preview of the first page in 1,479 of our files. Read your ODT file in a word processor before you share it.
Macros and signatures
50 of our files store Basic macros, and 1 stores a Scripts folder. 73 are signed with a digital signature, and 10 are encrypted.
We started no macro on purpose, and we scanned none for malware. A word processor with macros enabled can act on them, so keep the macro settings of your program on their strictest level for files you did not write.
Not sure? Check it first. Copy the hash, read your ODT file with the check script and compare a second reader. If your ODT file arrived by email from someone you do not know, do not enable macros. Ask the sender about it through another route.
Why Will Your ODT File Not Open? Eight causes, and what to do about every one
Most ODT files that will not open fail for one of eight reasons. Read the first 80 bytes first, then the ZIP names, then the text. All three decoders refused 14 of 48 damaged ODT files and split on 23. 4 copies gave different text in at least one decoder.
We read 1,583 ODT files and 48 damaged ODT files with five readers. The table groups what we saw into eight causes. The number in brackets matches the cause.
Every row says what happens to the ODT file and what to try. The fixes work on a copy, and none changes the original. A reader that says nothing is no sign that the page is complete.
| Cause | Result and fix |
|---|---|
| A cut file or a lost ZIP end (1) | All three decoders refused the seven cut copies and the three copies with a damaged ZIP end. The file command still named the cuts OpenDocument Text. Fix: Compare the size and the hash with the source, then copy your ODT file again. We tested no repair. |
| The mimetype entry out of place (2) | The file command and our script refused all 91 files with the mimetype entry out of place. pandoc opened 87 of them, LibreOffice 81 and odfpy 72. Fix: Open your ODT file in LibreOffice or pandoc and save a new ODT file. LibreOffice wrote the mimetype entry first in our example. We tested no repair. |
| A file that is not an ODT file (3) |
A file of another type named .odt has no ODT mimetype entry. The file command named the true type of all 12 of our examples, and our script refused all 12. Fix: Read the first bytes. Without 50 4b 03 04 and the ODT type, name the type with the file command and open the file as that type.
|
| A damaged manifest (4) | LibreOffice refused all five copies with a damaged manifest, and odfpy refused four. pandoc returned the intact text from all five. Fix: Try pandoc, then compare the words with the source. |
| Damaged content (5) | content.xml stores the text. All three decoders refused D3, D8 and D9, which cut it, zero part of it or flip a byte in it. D6 had its body text removed and opened everywhere as an empty page. Fix: Open content.xml in a text editor. If it does not parse, ask for a new copy. |
| A locked file (6) | 10 of our files are encrypted. The file command named all 10 OpenDocument Text, but our script, pandoc and LibreOffice opened 1 apiece and odfpy opened 2. Fix: Ask the sender for the password and open your ODT file in a word processor. We tested no password. |
| A strict reader (7) | The file command refused 115 of our files, our script 117, odfpy 96, LibreOffice 37 and pandoc 36. odfpy refused 55 ODF 1.0 files for one manifest line. Fix: Try a second reader before you decide. pandoc and LibreOffice opened 91 of the 95 ODF 1.0 files. |
| A version problem (8) | D4 sets the ODF version to 9.9, and LibreOffice refused it. Microsoft says Word saves ODF 1.4 only, and older Office versions that support only ODF 1.3 open ODF 1.4 files without the new features. Fix: Open your ODT file in a recent LibreOffice, or in Microsoft 365 for an ODF 1.4 file. |
Check ODT files that will not open, step by step
We tested the reading steps on Python 3.13 and Linux. We opened no ODT file in Microsoft Word, and the steps keep the original untouched at every point.
- Copy the ODT file, write its SHA256 hash and work on the copy.
-
Read the first 80 bytes with the six step order. If they do not start with
50 4b 03 04, name the type with the file command. - Read the ZIP names and the XML parts with our ZIP check script. A problem names the part where the package stops making sense.
- Convert the text with pandoc and LibreOffice, as in the command line steps, and compare the words.
- If one reader refuses the ODT file, try another before you decide, as the split files show.
- If the ODT file is smaller than the source says, copy it again and compare the hash.
- Open the ODT file in a word processor and look at the page, the table and the picture.
What to send a helper
Short messages about an ODT file get faster answers. Include the details below, and add the script output. Its first line gives OK or FLAG, the version and the number of entries.
Subject: ODT file will not open
File: name, size in bytes and SHA256 hash
Check: the output of odt_peek.py
Reader: name, version and the exact words of the error
Platform: Windows, Mac or Linux and the program you used
Source: where the ODT file came from and when it was copied
What no step can fix
Do not try online repair sites. A site that offers to fix or convert any ODT file for free can keep the upload. An ODT file can store a creator name, comments and tracked changes, as the privacy check shows. Try the steps above on a copy first.
How Do You Convert an ODT File to DOCX or PDF? Three documents, seven methods and what changed
LibreOffice converted base.odt to DOCX, DOC, PDF, text, HTML, RTF and flat XML, and pandoc wrote a DOCX file. Through DOCX and DOC, the 2 headings, 3 list items, 4 table rows, the picture and all 35 words came back. RTF returned no headings, and the pandoc DOCX gave the table 5 rows.
We converted three ODT files. base.odt is the 69,376 byte test report with a table and a picture. letter.odt is a letter of 482 words in 8 paragraphs. long.odt has 12,050 words in 150 paragraphs and 25 headings.
| Method | base.odt | letter.odt | long.odt |
|---|---|---|---|
| Original ODT | 69,376 | 34,727 | 56,554 |
| DOCX from LibreOffice | 52,385 | 6,173 | 18,593 |
| DOCX from pandoc | 55,662 | 10,539 | 22,824 |
| DOC from LibreOffice | 64,512 | 14,848 | 149,504 |
| PDF from LibreOffice | 40,414 | 20,998 | 97,566 |
| RTF from LibreOffice | 111,120 | 5,694 | 86,805 |
| HTML from LibreOffice | 4,118 | 3,741 | 70,354 |
| Text from LibreOffice | 301 | 2,719 | 67,713 |
| Flat XML (FODT) | 118,733 | 34,300 | 108,537 |
No format wins every row. For long.odt the DOC file is 149,504 bytes, which is almost 3 times the ODT file, while the DOCX file is 18,593. The HTML file for base.odt is 4,118 bytes, but it needs the 50,502 byte picture beside it.
Size says little about the text. In letter.odt the thumbnail alone is 26,001 of the 34,727 bytes, and the DOCX file from LibreOffice is 6,173. The ODT file is bigger than its words need.
What changed in a round trip
We converted base.odt to DOCX, DOC and RTF with LibreOffice and to DOCX with pandoc, then back to ODT, and we counted what came back. The 3 list items, the picture and all 35 words survived every route. The table lists the two counts that can change.
| Route | Headings | Table rows |
|---|---|---|
| The ODT file | 2 | 4 |
| DOCX from LibreOffice | 2 | 4 |
| DOC from LibreOffice | 2 | 4 |
| RTF from LibreOffice | 0 | 4 |
| DOCX from pandoc | 2 | 5 |
The headings did not survive RTF. The converted file had no heading elements, and we did not check whether the text kept a heading look. The pandoc DOCX gave the table a fifth row, and we did not trace why. We compared counts and not the look of the page.
Convert ODT to DOCX or PDF
LibreOffice converts in headless mode with one command, and pandoc converts with one more. The last command lists the sizes, and they match the first column of the table.
soffice --headless --convert-to docx base.odt
soffice --headless --convert-to pdf base.odt
pandoc -f odt -t docx -o base_pandoc.docx base.odt
ls -l base* | awk '{print $5, $9}'
64512 base.doc
52385 base.docx
118733 base.fodt
4118 base.html
69376 base.odt
40414 base.pdf
111120 base.rtf
301 base.txt
55662 base_pandoc.docx
The first two commands write base.docx and base.pdf. The third writes a DOCX file with pandoc. Both programs read base.odt from the same folder and leave it untouched. The DOCX file format page and the PDF file format page cover the files you get.
Flat XML as an archive copy
Wikipedia lists .fodt as the flat XML version of the format. LibreOffice wrote base.fodt at 118,733 bytes. It is one text file, and it stores the picture and the thumbnail as text inside it. pandoc, odfpy and our script refused it as an ODT file, and LibreOffice opened it.
Keep the original file. Convert from your ODT file and keep it. RTF returned no headings for base.odt, and you cannot get them back from the copy.
How Does an ODT File Differ From DOCX, DOC and PDF Files? The first entry names the type
The first entry names the type. ODT, OTT, ODS and DOCX files all start with 50 4b 03 04, so the first 4 bytes cannot separate them. The mimetype entry at byte 30 separates the OpenDocument types. DOC, RTF and PDF files start with other bytes. The ending names none of them.
Eight things get mixed up with ODT files because they all store documents. The table lists what separates them. Every row ends with its source.
| Type | What separates it |
|---|---|
| ODT file |
Starts with 50 4b 03 04. The first entry is mimetype, and the type application/ starts at byte 38. Source: IANA and our tests.
|
| DOCX file | Starts with the same four bytes. In our file the first entry is _rels/.rels and there is no mimetype entry. The file command printed Microsoft Word 2007+. Source: Our tests. |
| DOC file |
Starts with d0 cf 11 e0 a1 b1 1a e1. The file command printed Composite Document File V2 Document, and only LibreOffice opened it. Source: Our tests.
|
| RTF file | A text file that starts with the characters {\rtf1. The file command printed Rich Text Format data, and only LibreOffice opened it. Source: Our tests. |
| PDF file | Starts with the characters %PDF. In our file they are %PDF-1.7. All five readers refused it as an ODT file. Source: Our tests. |
| FODT file | A text file that starts with the characters of its XML header. Wikipedia lists it as the flat XML version of the format. Source: Wikipedia and our tests. |
| OTT template | A ZIP whose mimetype says text-template. The file command printed OpenDocument Text Template, and pandoc, odfpy and LibreOffice opened it. Source: Our tests. |
| ODS spreadsheet | A ZIP whose mimetype says spreadsheet. The file command printed OpenDocument Spreadsheet, and all three decoders refused it as an ODT file. Source: Our tests. |
Separate them with our script
Our script reads the ZIP names and refuses any file whose first entry is not mimetype with the ODT type. For fake.odt, a PDF document named .odt, it says the file is not a ZIP. For the DOCX file it says the first entry is not mimetype, and for the ODS file it prints the spreadsheet type. It never guesses.
Why the ending misleads
We saved one ODT file under 7 other names, and four of five readers opened all 7. We gave 12 other files the name .odt, and the file command named the true type of all 12. An ending is a label, and the first entry says what a file is.
Which one do you have
d0 cf 11 e0.
What Is the ODT File Format Made Of? The facts we could check, and where they came from
OASIS created the OpenDocument Text format, and IANA, PRONOM, Wikipedia and Microsoft document it. The facts below come from those sources, from FileInfo and from our checks of 1,583 ODT files and 48 damaged ODT files.
| Part | What we could check |
|---|---|
| Maker | OASIS, per FileInfo and Wikipedia. Wikipedia says the format was based on the OpenOffice.org XML specification from Sun Microsystems and was first developed for StarOffice. |
| Name |
OpenDocument Text, part of the OpenDocument Format. IANA registers application/ with the ending .odt.
|
| First bytes | PK at byte 0, mimetype at byte 30 and the type at byte 38, as IANA lists. 1,469 of our 1,583 ODT files match all three. |
| Structure | A ZIP package. The first entry is mimetype, stored uncompressed, per Wikipedia. META-INF/manifest.xml lists every part, content.xml stores the content, styles.xml the styles, meta.xml the metadata and settings.xml the settings. |
| Thumbnail | Thumbnails/thumbnail.png is a preview of the first page. Wikipedia describes 128 by 128 pixels. 4 of our 1,479 thumbnails are that size, and 650 are 181 by 256. |
| Pictures | The Pictures folder is not defined by the specification, per Wikipedia. It recommends PNG for bitmaps and SVG for vector graphics. 254 of our files store pictures. |
| Versions | ODF 1.0 on 1 May 2005, 1.1 on 1 February 2007, 1.2 on 29 September 2011, 1.3 in April 2021 and 1.4 on 3 December 2025, per Wikipedia. |
| Standards | ISO/IEC 26300 covers 1.0, published on 30 November 2006, 1.1 as Amendment 1 in March 2012 and 1.2 in June 2015, per Wikipedia. |
| Records | PRONOM lists OpenDocument Text 1.3 as fmt/1756 with a signature in the manifest and in content.xml. IANA created its entry on 31 May 2006. |
| Related types | Wikipedia lists .ods, .odp, .odg and .odf for the other kinds, and .fodt for the flat XML version. Our OTT test file used the type text-template. |
| Risks | IANA says OpenDocument files can contain scripts, and that external objects and hyperlinks need careful handling. 50 of our files store Basic macros. |
| Our tests | 1,583 ODT files, 48 damaged ODT files, 19 renamed or mislabeled files and one ODT file converted 7 ways. Five readers and a 43 line script all worked on Linux. |
About the values we list
Facts about the layout come from Wikipedia and IANA, and every row names its source. The first bytes and the part names were also checked against our files. FileInfo is a directory, so we use it for the developer, the description and the programs only.
Where sources disagree, we say so. Wikipedia gives 3 December 2025 for the approval of ODF 1.4, while its text says version 1.4 has been current since March 2024. Microsoft describes ODF 1.4 saving in builds from 2404. We list the dates as their sources give them.
What we left out
We opened no ODT file in Microsoft Word, WordPad, TextEdit or Google Docs, and we tested no browser. We tested no repair and no deletion, and we scanned no ODT file for malware. We started no macro and no outside viewer or converter.
Our 1,583 ODT files come from six public test folders, and 1,368 come from LibreOffice. Our damaged copies change one thing at a time in one ODT file. We compared text and not pictures, styles or layout. We tested one version of every reader. A reader that fails on our files can still work on yours.
Sources checked
For the layout, see the Wikipedia article on the OpenDocument technical specification. For the type, see the IANA entry for the ODT media type.
For the history and the versions, see the Wikipedia article on OpenDocument. For the signature, see the PRONOM record. For the programs, see the FileInfo page on ODT files and the Microsoft note on ODF 1.4. Every count came from the ODT files and scripts in our research folder.
Frequently Asked Questions About ODT Files
What is an ODT file?
An ODT file is a word processor document in the OpenDocument Text format. It is a ZIP package of XML parts that starts with 50 4b 03 04, and its first entry, mimetype, names the type. Our 1,583 test files range from an empty file to 3,888,830 bytes.
How do I open an ODT file?
FileInfo lists LibreOffice, Apache OpenOffice and Microsoft Word 365 for Windows and Mac. We tested five other readers on 1,583 ODT files instead. pandoc opened 1,547, LibreOffice 1,546 and odfpy 1,487. We opened no file in Word, WordPad or TextEdit.
What does ODT stand for?
ODT stands for OpenDocument Text. It is the word processor type of the OpenDocument Format from OASIS. IANA registers a media type for the ending .odt.
Is an ODT file safe to open?
IANA says OpenDocument files can contain scripts that act on the user's behalf. 50 of our 1,580 ZIP based files store Basic macros, and 614 of 1,570 name a creator. Open files from unknown senders with care, and check the ODT file before you share it.
What is inside an ODT file?
A ZIP package. The first entry is mimetype, then XML parts like content.xml, styles.xml and meta.xml. Our example, base.odt, is 69,376 bytes with 16 entries, and its picture and thumbnail make up 86 percent of the bytes.
Can I delete an ODT file?
We did not test deletion, and the sources we read give no deletion steps. Check which program or folder uses your ODT file first, because other documents can link to it. Copy the ODT file and write its hash before you delete anything.
How do I convert an ODT file to DOCX or PDF?
LibreOffice converts in headless mode with one command, and pandoc converts with another. For base.odt, LibreOffice wrote a DOCX file of 52,385 bytes and a PDF file of 40,414 bytes. Through DOCX and DOC, the 2 headings, 3 list items, 4 table rows and the picture came back.
Why will my ODT file not open?
Eight causes cover what we found. The first four are a cut file, the mimetype entry out of place, a file that is not an ODT file and a damaged manifest. The last four are damaged content, a locked file, a strict reader and a version problem. Read the first 80 bytes first.
What is the difference between ODT and DOCX?
Both are ZIP packages that start with 50 4b 03 04. An ODT file has mimetype as its first entry, and a DOCX file does not. In our test the file command printed OpenDocument Text for one and Microsoft Word 2007+ for the other.
How can I check if an ODT file is damaged?
Read the first 80 bytes, then the ZIP names, then convert the text with two decoders. Our script flagged 30 of 48 damaged copies, and three decoders split on 23 of them. Only 10 copies gave the same text in all three.
Can I rename a DOCX file to ODT?
No. A DOCX file with the ending .odt is still a DOCX file. The file command named it and our script refused it. LibreOffice opened it by content, and pandoc and odfpy refused it. To get an ODT file, save the document again in a program that writes ODT.
Does Microsoft Word open ODT files?
Microsoft says Word in Microsoft 365 opens ODF 1.3 and earlier files and saves ODF 1.4 only. Wikipedia lists ODF 1.1 support in Office 2010 and ODF 1.4 in Office 2024. We opened no ODT file in Word, so we tested none of this.
Still Stuck With an ODT File? Seven routes out, depending on what went wrong
Read the first bytes and the ZIP names of the ODT file. The cause table lists what to try in order.
The size comparison covers DOCX, DOC, PDF, text, HTML and RTF.
Is it a Word file? The page on DOCX files covers Word packages, and the page on DOC files covers files that start with d0 cf 11 e0.
Is it a PDF file? The page on PDF files covers documents that start with %PDF.
Is it a ZIP archive? The page on ZIP files covers archives, and an ODT file is a ZIP package.
Is it a file type you do not know? Browse the file extension resource library, or send it on the submit a file type page.
Do you need the format facts? Read the format part for the entries, versions and sources of ODT files.