Convert Textile to JSON

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

Textile vs JSON Format Comparison

Aspect Textile (Source Format) JSON (Target Format)
Format Overview
Textile
Textile Markup Language

A lightweight markup language developed by Dean Allen for web content authoring. Textile uses intuitive punctuation-based syntax for text formatting, producing clean HTML output. It is widely used in Redmine project management, Textpattern CMS, and various web platforms.

Lightweight Markup Web Authoring
JSON
JavaScript Object Notation

A lightweight data interchange format based on a subset of JavaScript syntax. JSON uses human-readable text to store and transmit data objects consisting of key-value pairs and arrays. It has become the dominant format for web APIs, configuration files, and data exchange between applications across all programming languages.

Data Interchange Universal
Technical Specifications
Structure: Plain text with inline formatting markers
Encoding: UTF-8 text
Format: Human-readable markup
Compression: None
Extensions: .textile, .txt
Structure: Nested objects and arrays
Encoding: UTF-8 (RFC 8259)
Format: ECMA-404 / RFC 8259 standard
Compression: None (minifiable)
Extensions: .json
Syntax Examples

Textile uses punctuation-based formatting:

h1. Document Title

h2. Introduction

p. This is a paragraph with
*bold* and _italic_ text.

* Item one
* Item two
* Item three

JSON uses key-value pairs and arrays:

{
  "title": "Document Title",
  "sections": [
    {
      "heading": "Introduction",
      "content": "This is a paragraph",
      "items": [
        "Item one",
        "Item two",
        "Item three"
      ]
    }
  ]
}
Content Support
  • Headings (h1. through h6.)
  • Bold, italic, underline, strikethrough
  • Ordered and unordered lists
  • Tables with headers
  • Hyperlinks and images
  • Block quotes and code blocks
  • CSS class and ID attributes
  • Inline HTML passthrough
  • Strings, numbers, booleans, null
  • Nested objects (key-value pairs)
  • Arrays (ordered collections)
  • Unlimited nesting depth
  • Unicode string support
  • Strict type system
  • No comments (by specification)
  • Self-describing data structure
Advantages
  • Simple, intuitive syntax
  • Quick to write and read
  • Produces clean HTML output
  • Built-in CSS class support
  • Good table formatting
  • Integrated with Redmine and Textpattern
  • Universal data interchange format
  • Native JavaScript compatibility
  • Supported by every programming language
  • Lightweight and efficient
  • Easy to parse and generate
  • Standard format for REST APIs
  • Schema validation available
Disadvantages
  • Less widely known than Markdown
  • Limited editor support
  • No native e-book features
  • Primarily web-focused
  • Fewer online resources
  • No comments allowed in spec
  • Verbose compared to YAML
  • Strict syntax (trailing commas invalid)
  • No date/time data type
  • Not suitable for large binary data
Common Uses
  • Redmine wiki pages and issues
  • Textpattern CMS content
  • Web content authoring
  • Project documentation
  • Blog post drafting
  • REST API request and response bodies
  • Configuration files (package.json, etc.)
  • NoSQL database storage (MongoDB)
  • Inter-application data exchange
  • Web application state management
  • Cloud service configurations
Best For
  • Redmine users and contributors
  • Quick web content formatting
  • Structured document authoring
  • Projects using Textile-based tools
  • Web APIs and microservices
  • Application data interchange
  • Configuration management
  • Structured data storage
Version History
Introduced: 2002 (Dean Allen)
Current Version: Textile 2
Status: Stable, maintained
Evolution: Minor updates for compatibility
Introduced: 2001 (Douglas Crockford)
Standards: ECMA-404, RFC 8259
Status: Active, universally adopted
Evolution: Stable specification since 2017
Software Support
Redmine: Native support
Textpattern: Built-in markup
Pandoc: Full support
Other: Ruby, PHP, Python libraries
JavaScript: JSON.parse/stringify (native)
Python: json module (stdlib)
All Languages: Built-in or standard library
Databases: MongoDB, CouchDB, PostgreSQL

Why Convert Textile to JSON?

Converting Textile to JSON transforms human-readable markup documents into structured, machine-parseable data objects. This conversion is valuable for web developers, API designers, and content management systems that need to process Textile content programmatically or serve it through REST APIs.

Textile, created by Dean Allen in 2002, organizes content with headings, paragraphs, lists, and tables using intuitive punctuation syntax. When converted to JSON, this hierarchical structure becomes a nested object that can be easily traversed, queried, and manipulated by any programming language. Headings become object keys, lists become JSON arrays, and paragraphs become string values.

JSON (JavaScript Object Notation) is the lingua franca of web APIs and data interchange. Created by Douglas Crockford, it has become the standard format for sending data between web servers and clients, storing configuration, and persisting application state. JSON is natively supported by JavaScript and has built-in parsing libraries in Python, Ruby, PHP, Java, Go, and virtually every other programming language.

This conversion is particularly useful when building headless CMS systems that store content in JSON, creating API endpoints that serve Textile-authored content, or migrating Redmine documentation to JSON-based content management platforms. The structured JSON output enables efficient content querying, transformation, and rendering across different front-end frameworks and applications.

Key Benefits of Converting Textile to JSON:

  • API Integration: Serve Textile content through REST APIs as JSON
  • Structured Data: Textile hierarchy becomes queryable JSON objects
  • Universal Format: JSON works with every programming language
  • CMS Migration: Move Redmine/Textile content to JSON-based platforms
  • Database Storage: Store in MongoDB, PostgreSQL JSONB, or other databases
  • Frontend Rendering: Feed JSON data to React, Vue, or Angular components
  • Data Processing: Process Textile content programmatically with JSON tools

Practical Examples

Example 1: Document Structure Extraction

Input Textile file (article.textile):

h1. Getting Started with Textile

p. Textile is a *lightweight* markup
language for web content.

h2. Basic Syntax

* Bold text: *bold*
* Italic text: _italic_
* Headings: h1. through h6.

Output JSON file (article.json):

{
  "title": "Getting Started with Textile",
  "content": "Textile is a lightweight ...",
  "sections": [
    {
      "heading": "Basic Syntax",
      "items": [
        "Bold text: bold",
        "Italic text: italic",
        "Headings: h1. through h6."
      ]
    }
  ]
}

Example 2: API Content Payload

Input Textile file (product.textile):

h1. Product Details

h2. Specifications

|_. Feature   |_. Value     |
| Weight      | 250g        |
| Dimensions  | 10x5x2 cm  |
| Material    | Aluminum    |

h2. Description

p. Premium quality product
designed for everyday use.

Output JSON file (product.json):

{
  "title": "Product Details",
  "sections": [
    {
      "heading": "Specifications",
      "table": [
        {"Feature":"Weight","Value":"250g"},
        {"Feature":"Dimensions","Value":"10x5x2 cm"},
        {"Feature":"Material","Value":"Aluminum"}
      ]
    },
    {
      "heading": "Description",
      "content": "Premium quality product..."
    }
  ]
}

Example 3: Blog Post Export

Input Textile file (post.textile):

h1. My First Blog Post

p. Published on March 9, 2026.

p. Welcome to my blog! Today I want
to share some thoughts on *web
development* trends.

bq. "The future belongs to those
who prepare for it today."

Output JSON file (post.json):

{
  "title": "My First Blog Post",
  "paragraphs": [
    "Published on March 9, 2026.",
    "Welcome to my blog! Today I want
     to share some thoughts on web
     development trends."
  ],
  "blockquote": "The future belongs to
    those who prepare for it today."
}

Frequently Asked Questions (FAQ)

Q: What is JSON format?

A: JSON (JavaScript Object Notation) is a lightweight data interchange format defined by RFC 8259 and ECMA-404. It uses human-readable text to represent data as key-value pairs (objects) and ordered lists (arrays). JSON supports strings, numbers, booleans, null, objects, and arrays. It is the standard format for web APIs and is natively supported by JavaScript and available in all programming languages.

Q: What is Textile markup?

A: Textile is a lightweight markup language created by Dean Allen in 2002 for web content authoring. It uses simple punctuation for formatting: *bold*, _italic_, h1. for headings, # for ordered lists, * for bullet lists, and pipe characters for tables. Textile is widely used in Redmine and Textpattern CMS, and was designed to produce clean HTML output.

Q: How is Textile content mapped to JSON structure?

A: The converter maps Textile elements to JSON data types: headings become object keys, paragraphs become string values, lists become JSON arrays, tables become arrays of objects (each row as an object with column headers as keys), and the overall document becomes a nested JSON object reflecting the Textile heading hierarchy.

Q: Is the JSON output valid and parseable?

A: Yes! The converter produces valid JSON that conforms to RFC 8259 specification. The output is properly formatted with correct quoting, escaping of special characters, and valid UTF-8 encoding. You can parse the output with any JSON library including Python's json module, JavaScript's JSON.parse(), or any other JSON parser.

Q: Can I use the JSON output in a web API?

A: Absolutely! The JSON output is ready to be served as an API response. You can load it into a web framework (Express, Django, Flask, Rails) and serve it as a REST API endpoint with the application/json content type. This is particularly useful for building headless CMS systems or content APIs from Textile-authored documentation.

Q: How are Textile tables converted to JSON?

A: Textile tables are converted to JSON arrays of objects. The header row (marked with |_. in Textile) provides the object keys, and each subsequent row becomes an object with those keys. For example, a table with headers "Name" and "Value" becomes an array like [{"Name": "...", "Value": "..."}, ...]. This structure is ideal for data processing and display in web applications.

Q: What happens to Textile formatting in JSON?

A: Textile formatting markers (*bold*, _italic_, etc.) are stripped from the JSON output since JSON is a data format, not a document format. The plain text content is preserved as string values. If you need to retain formatting information, the converter can optionally include the raw Textile markup as a string value alongside the parsed content.

Q: Can I store the JSON output in a database?

A: Yes! The JSON output can be stored in any database: document databases like MongoDB and CouchDB natively store JSON, PostgreSQL has JSONB columns with full indexing and querying, MySQL has JSON column support, and even SQLite supports JSON functions. This makes it easy to build searchable content repositories from Textile-authored documents.