Rich Text Format
RTF encodes formatted text using ASCII control words inside nested curly-brace groups, readable by virtually every word processor on every operating system. Microsoft introduced RTF in 1987 as a cross-platform interchange format, and the last spec update (RTF 1.9.1) shipped in 2008.
RTF rendering requires a full rich text layout engine with table and image support not available in browser WASM.
Common questions
Can I open RTF files without Microsoft Word?
Yes. RTF opens in WordPad (built into every Windows install), TextEdit on macOS, LibreOffice Writer on all platforms, and Google Docs in a browser. RTF was designed specifically for cross-platform interchange, so no single vendor's tool is required.
Is RTF safer than DOCX for receiving documents from unknown senders?
RTF cannot execute VBA macros, which eliminates the most common DOCX-based attack vector. However, RTF has its own exploit history — crafted \objdata groups have triggered memory corruption in older Word versions (CVE-2017-11882). Strip OLE objects from untrusted RTF files before opening.
Why does my RTF file look different in Word vs LibreOffice?
RTF rendering depends on each application's control word interpretation. Later RTF features (drawing objects, nested tables, advanced list numbering) are Microsoft-specific extensions that LibreOffice may approximate differently. For pixel-perfect fidelity, convert to PDF.
Is RTF still actively developed?
No. The last specification update was RTF 1.9.1 in 2008. Microsoft now promotes DOCX (Office Open XML) as the standard word processing format. RTF remains widely supported for reading but receives no new features.
What makes .RTF special
What is an RTF file?
RTF (Rich Text Format) is a document format developed by Microsoft in 1987 for cross-platform document exchange. Unlike plain text, RTF supports basic formatting (bold, italic, fonts, colors, tables) while remaining readable by most word processors across different operating systems.
Continue reading — full technical deep dive
How to open RTF files
- WordPad (Windows) — Built-in
- TextEdit (macOS) — Built-in
- Microsoft Word (Windows, macOS) — Full support
- LibreOffice Writer (Windows, macOS, Linux) — Free
- Google Docs (Web) — Free, online
Technical specifications
| Property | Value |
|---|---|
| Format | Tagged text (ASCII-based) |
| Formatting | Bold, italic, fonts, colors, tables |
| Images | Supported (embedded) |
| Encoding | ASCII with escape sequences |
| Cross-platform | Yes — Windows, macOS, Linux |
Programs that open RTF files
- WordPad — Built-in Windows editor
- Microsoft Word — Full editing
- LibreOffice Writer — Free alternative
- TextEdit — macOS built-in
- Google Docs — Online editing
Common use cases
- Cross-platform documents: Share formatted text across OS
- Email drafts: Formatted text without full document overhead
- Legal documents: Simple formatted documents
- Legacy compatibility: Interchange between word processors
.RTF compared to alternatives
| Formats | Criteria | Winner |
|---|---|---|
| .RTF vs .DOCX | Feature set DOCX supports tracked changes, comments, SmartArt, advanced table styles, and embedded charts. RTF is limited to basic character and paragraph formatting with embedded images. | DOCX wins |
| .RTF vs .DOCX | Cross-platform support RTF opens in every word processor including minimal editors like WordPad and TextEdit. DOCX requires a modern office suite or conversion library for full rendering fidelity. | RTF wins |
| .RTF vs .TXT | Formatting RTF carries fonts, colors, bold, italic, tables, and embedded images via control words. TXT has no formatting at all. | RTF wins |
| .RTF vs .PDF | Editability RTF is designed for editing and reflows across window sizes. PDF is designed for fixed-layout viewing and printing — editing PDF content requires specialized tools. | RTF wins |
Technical reference
- MIME Type
application/rtf- Magic Bytes
7B 5C 72 74 66{\rtf text signature.- Developer
- Microsoft
- Year Introduced
- 1987
- Open Standard
- Yes
{\rtf text signature.
Binary Structure
RTF is a text-based markup format, not a binary format, but it has a well-defined structure. Every RTF file starts with the opening brace and \rtf control word: {\rtf1 — the 1 indicates RTF version 1.x. The file is organized as nested groups delimited by curly braces { }. Each group contains control words (backslash-prefixed tokens like \b for bold, \i for italic, \par for paragraph break) and plain text content. The document header contains a font table (\fonttbl), color table (\colortbl), stylesheet (\stylesheet), and optional info group (\info with \author, \title, \creatim). After the header groups, body text follows with inline control words for character and paragraph formatting. Images are embedded as hex-encoded data inside \pict groups, specifying format (\pngblip, \jpegblip, \wmetafile) and dimensions. The file ends with a closing brace matching the opening {\rtf1. The magic bytes 7B 5C 72 74 66 correspond to the ASCII string {\rtf. RTF uses 7-bit ASCII as its base encoding, with Unicode characters expressed as \uN control words (e.g., \u8364 for the Euro sign) followed by an ANSI fallback character.
| Offset | Length | Field | Example | Description |
|---|---|---|---|---|
0x00 | 1 byte | Opening Brace | 7B ({) | Start of RTF document group. Every RTF file begins with this character. |
0x01 | 4 bytes | RTF Control Word | 5C 72 74 66 (\rtf) | Identifies the file as RTF. Followed by version number (always 1). |
0x05 | 1 byte | Version | 31 (1) | RTF version number. All spec revisions use version 1. |
Attack Vectors
- OLE object embedding — malicious OLE objects in \objdata groups can trigger memory corruption in vulnerable RTF parsers (CVE-2017-11882, CVE-2017-0199)
- Font table overflow — crafted \fonttbl with excessive entries or malformed font names can cause heap overflow in parsers that pre-allocate based on table size
- Equation Editor exploit — RTF \objdata embedding Microsoft Equation Editor 3.0 objects triggers stack buffer overflow in EQNEDT32.EXE (CVE-2017-11882)
Mitigation: FileDex does not execute RTF parsing or OLE object instantiation. Any RTF processing occurs as text-level analysis in the browser sandbox with no COM/OLE component access. No file data leaves the device.