Convert Base64 to Textile

Drag and drop files here or click to select.
Max file size 100mb.
Uploading progress:

Base64 vs Textile Format Comparison

Aspect Base64 (Source Format) Textile (Target Format)
Format Overview
Base64
Binary-to-Text Encoding Scheme

Base64 is an encoding method that represents binary data using 64 printable ASCII characters (A-Z, a-z, 0-9, +, /). It is widely used to embed binary content in text-based contexts such as email attachments (MIME), data URIs in HTML/CSS, JWT tokens, and API payloads. The encoded output is approximately 33% larger than the original data.

Encoding Scheme Binary-to-Text
Textile
Textile Markup Language

Textile is a lightweight markup language created by Dean Allen in 2002. It converts simple text notation into HTML, supporting headings, bold, italic, links, tables, lists, and code blocks. Textile is the default markup in Redmine, Textpattern CMS, and various wiki platforms, providing a readable way to write formatted web content.

Markup Language Web Publishing
Technical Specifications
Structure: Continuous string of ASCII characters
Encoding: 64 ASCII characters (A-Z, a-z, 0-9, +, /)
Padding: = or == for alignment
Size Overhead: ~33% larger than source binary
Standard: RFC 4648
Structure: Inline markup notation
Encoding: UTF-8
Format: Plain text with Textile markers
Compression: None
Extensions: .textile, .txt
Syntax Examples

Base64 encoded text content:

SGVsbG8gV29ybGQhIFRoaXMg
aXMgYSBzYW1wbGUgZG9jdW1l
bnQgd2l0aCBmb3JtYXR0aW5n
LiBJdCBjb250YWlucyBoZWFk
aW5ncywgbGlzdHMsIGFuZCB0
YWJsZSBkYXRhLg==

Textile uses simple markup notation:

h1. Document Title

p. This is a paragraph of text.

* First list item
* Second list item

|_. Name |_. Value |
| Width | 100px |
| Height | 200px |

bc. code block here
Content Support
  • Any binary data (images, documents, audio)
  • Text content of any encoding
  • Structured data (JSON, XML, HTML)
  • Cryptographic keys and certificates
  • Email attachments (MIME encoding)
  • JWT tokens and authentication data
  • Data URIs for web embedding
  • Headings (h1. through h6.)
  • Bold (*text*), italic (_text_), strikethrough
  • Tables with header rows
  • Ordered and unordered lists
  • Code blocks (bc. prefix)
  • Block quotes (bq. prefix)
  • Links, images, and footnotes
  • CSS class and ID attributes
Advantages
  • Safe transport of binary data in text channels
  • Universally supported across programming languages
  • No special character issues in text protocols
  • Standard encoding for email attachments
  • Essential for web APIs and data URIs
  • Simple encode/decode process
  • Clean, human-readable source text
  • Converts directly to semantic HTML
  • Native support in Redmine
  • Easy to learn and write manually
  • Good table syntax with header support
  • CSS styling integration
  • Ideal for wiki documentation
Disadvantages
  • 33% size overhead compared to binary
  • Not human-readable without decoding
  • No inherent structure or formatting
  • Decoding required before content is usable
  • Cannot be searched or indexed directly
  • Less popular than Markdown
  • Smaller ecosystem of tools and plugins
  • Fewer supported platforms than Markdown
  • No formal standardized specification
  • Inconsistent implementations across libraries
Common Uses
  • Email attachments (MIME encoding)
  • Data URIs in HTML and CSS
  • JWT tokens and Basic Authentication
  • Embedding binary data in JSON/XML
  • Storing binary content in databases
  • Redmine wiki pages and issue descriptions
  • Textpattern CMS content
  • Project documentation
  • Wiki-based knowledge bases
  • Issue tracker descriptions
  • Web content authoring
Best For
  • Transporting binary data over text channels
  • Embedding files in web pages
  • API authentication tokens
  • Safe data serialization
  • Redmine project documentation
  • Textile-based CMS platforms
  • Quick formatted web content
  • Wiki documentation with tables
Version History
Introduced: 1987 (Privacy Enhanced Mail)
Standard: RFC 4648 (2006)
Status: Universally adopted
Variants: Standard, URL-safe, MIME
Introduced: 2002 (Dean Allen)
Current: Textile 2 (various implementations)
Status: Stable, maintained in Redmine
Evolution: Textile 1 to Textile 2
Software Support
Python: base64 module (built-in)
JavaScript: btoa() / atob() functions
Java: java.util.Base64
Other: All major languages, browsers, CLI tools
Redmine: Primary markup format
Textpattern: Native CMS format
Ruby: RedCloth library
Other: PHP Textile, Python textile

Why Convert Base64 to Textile?

Converting Base64 encoded data to Textile markup is essential when you need to decode encoded content and present it as formatted documentation in Redmine, Textpattern, or other Textile-based platforms. Base64 strings often contain text documents, configuration files, or structured data that needs to be decoded and reformatted into human-readable Textile markup for wiki pages and project documentation.

In modern software development workflows, data frequently passes through Base64 encoding for safe transport via APIs, email systems, or embedded storage. When this encoded content needs to be documented or published on a Textile-powered platform like Redmine, the conversion process decodes the Base64 payload, interprets the underlying text structure, and generates properly formatted Textile with headings, paragraphs, tables, and code blocks.

Redmine, one of the most widely used open-source project management tools, relies on Textile as its default markup language. Database exports, API responses, log entries, and configuration files that arrive as Base64 strings can be directly transformed into Textile wiki pages that render beautifully in Redmine's web interface. This makes technical data accessible to the entire project team without requiring them to manually decode and format the content.

The conversion process handles the full pipeline from binary-to-text decoding through to structured Textile output. Lists are formatted with asterisks, tables use pipe notation with header markers, code snippets use the bc. block code prefix, and document structure is preserved with appropriate heading levels. The result is clean, publishable Textile that maintains the original content's meaning and organization.

Key Benefits of Converting Base64 to Textile:

  • Instant Decoding: Automatically decode Base64 and produce readable Textile output
  • Redmine Ready: Output works directly in Redmine wiki pages and issue descriptions
  • Table Formatting: Structured data converts to Textile tables with header rows
  • Code Preservation: Code snippets wrapped in bc. blocks for proper rendering
  • Web Publishing: Textile converts to semantic HTML for web display
  • CSS Integration: Apply custom CSS classes and IDs to Textile elements
  • Cross-Platform: Output works with RedCloth, PHP Textile, and Python textile

Practical Examples

Example 1: Decoding API Documentation

Input Base64 file (api_docs.base64):

QVBJIEV5bmRwb2ludHMKCkdFVCAvYXBpL3YxL3VzZXJz
IC0gTGlzdCBhbGwgdXNlcnMKUE9TVCAvYXBpL3YxL3Vz
ZXJzIC0gQ3JlYXRlIG5ldyB1c2VyCkdFVCAvYXBpL3Yx
L3Byb2R1Y3RzIC0gTGlzdCBwcm9kdWN0cwpERUxFVEUg
L2FwaS92MS9zZXNzaW9ucyAtIEVuZCBzZXNzaW9u

Output Textile file (api_docs.textile):

h1. API Endpoints

|_. Method |_. Path |_. Description |
| GET | @/api/v1/users@ | List all users |
| POST | @/api/v1/users@ | Create new user |
| GET | @/api/v1/products@ | List products |
| DELETE | @/api/v1/sessions@ | End session |

h2. Authentication

p. All endpoints except product listing
require Bearer token authentication.

Example 2: Decoding Configuration Data

Input Base64 file (config.base64):

c2VydmVyOgogIGhvc3Q6IDAuMC4wLjAKICBwb3J0OiA4
MDgwCiAgd29ya2VyczogNApkYXRhYmFzZToKICBlbmdp
bmU6IHBvc3RncmVzcWwKICBuYW1lOiBteWFwcF9kYgog
IGhvc3Q6IGxvY2FsaG9zdAogIHBvcnQ6IDU0MzI=

Output Textile file (config.textile):

h1. Server Configuration

|_. Parameter |_. Value |
| Host | 0.0.0.0 |
| Port | 8080 |
| Workers | 4 |

h2. Database Settings

|_. Parameter |_. Value |
| Engine | PostgreSQL |
| Database Name | myapp_db |
| Host | localhost |
| Port | 5432 |

p. _Configuration decoded from Base64 payload._

Example 3: Decoding Encoded Log Summary

Input Base64 file (log_summary.base64):

RXJyb3IgU3VtbWFyeSBSZXBvcnQKMjAyNi0wMy0wOQoK
Q1JJVElDQUw6IDIgZXJyb3JzCldBUk5JTkc6IDE1IHdh
cm5pbmdzCklORk86IDEyNDUgZW50cmllcwpERUJVRzog
ODkwMCBlbnRyaWVz

Output Textile file (log_summary.textile):

h1. Error Summary Report

p(. _Generated: 2026-03-09_

|_. Level |_. Count |
| *CRITICAL* | 2 errors |
| WARNING | 15 warnings |
| INFO | 1,245 entries |
| DEBUG | 8,900 entries |

h2. Notes

* Critical errors require immediate attention
* Warning count decreased from previous report
* Debug logging should be disabled in production

Frequently Asked Questions (FAQ)

Q: What is Base64 encoding?

A: Base64 is a binary-to-text encoding scheme that represents binary data using 64 printable ASCII characters: uppercase letters (A-Z), lowercase letters (a-z), digits (0-9), plus (+), and slash (/). It was designed for safe transmission of binary data through text-only channels like email (MIME) and is now ubiquitous in web development for data URIs, JWT tokens, and API payloads.

Q: What is Textile markup format?

A: Textile is a lightweight markup language created by Dean Allen in 2002 that converts plain text with special notation into HTML. It uses h1. for headings, *asterisks* for bold, _underscores_ for italic, and pipe-delimited rows for tables. Textile is the default formatting language in Redmine and Textpattern CMS, and is processed by libraries in Ruby, PHP, Python, and JavaScript.

Q: How does the Base64 to Textile conversion work?

A: The conversion first decodes the Base64 string back to its original binary content, then interprets the decoded text to identify structural elements like headings, lists, tables, and code blocks. These elements are then formatted using Textile syntax. The result is a clean Textile document that can be pasted directly into Redmine or any Textile-aware platform.

Q: Can I use the output directly in Redmine?

A: Yes! The generated Textile is fully compatible with Redmine's formatting engine. You can paste it directly into wiki pages, issue descriptions, or comments. Tables, headings, code blocks, lists, and inline formatting will all render correctly. Redmine uses Textile as its default markup, making this conversion particularly useful for Redmine users.

Q: What types of Base64 content can be converted?

A: Any Base64-encoded text content can be converted to Textile, including plain text documents, configuration files, log outputs, data exports, API responses, and markup content. Binary files like images or executables will be decoded but may not produce meaningful Textile output since they are not text-based. The converter works best with text-oriented Base64 payloads.

Q: How are tables formatted in the Textile output?

A: Tabular data from the decoded Base64 content is converted to Textile tables using pipe-delimited syntax. Header cells use the special |_. prefix which renders as bold header elements in HTML. Each row is separated by a newline, and cells are divided by pipes. The resulting tables render with proper styling in Redmine and other Textile processors.

Q: Is the Base64 padding (= signs) handled correctly?

A: Yes! The converter handles all standard Base64 variants including strings with single padding (=), double padding (==), and no padding. It also supports URL-safe Base64 (using - and _ instead of + and /). The padding ensures proper byte alignment during decoding, and the converter processes all valid Base64 input correctly.

Q: What platforms support Textile besides Redmine?

A: Textile is supported by Textpattern CMS, Movable Type, various Ruby on Rails applications, and numerous wiki engines. Libraries are available for Ruby (RedCloth), PHP (php-textile), Python (textile), Java, and JavaScript (textile-js). While Markdown has broader adoption, Textile remains the preferred format in the Redmine ecosystem and Textpattern community.