Convert Textile to YML

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

Textile vs YML Format Comparison

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

Lightweight markup language created by Dean Allen in 2002. Used extensively in Redmine, Textpattern CMS, and other web platforms. Provides concise, human-readable syntax for generating HTML with support for headings, lists, links, images, and tables.

Markup Language Redmine Default
YML
YAML Ain't Markup Language (.yml)

YML is the short file extension for YAML (YAML Ain't Markup Language), a human-friendly data serialization format. The .yml extension is widely used in Docker Compose, Rails, and many other tools. It is functionally identical to .yaml files and follows the same YAML specification.

Data Serialization Short Extension
Technical Specifications
Structure: Plain text with inline markup symbols
Encoding: UTF-8
Format Type: Lightweight markup language
Generates: HTML output
Extensions: .textile, .txt
Structure: Indentation-based hierarchy
Encoding: UTF-8 (recommended)
Format Type: Data serialization language
Standard: YAML 1.2 specification
Extensions: .yml, .yaml
Syntax Examples

Textile markup syntax:

h1. Deployment Configuration

h2. Services

|_. Service |_. Port |_. Replicas |
| web | 80 | 3 |
| api | 8080 | 2 |
| worker | N/A | 4 |

h2. Environment

* Production mode
* SSL enabled
* Logging: verbose

YML structured data:

document:
  title: "Deployment Configuration"

services:
  - service: "web"
    port: 80
    replicas: 3
  - service: "api"
    port: 8080
    replicas: 2
  - service: "worker"
    port: null
    replicas: 4

environment:
  - "Production mode"
  - "SSL enabled"
  - "Logging: verbose"
Content Support
  • Headings (h1. through h6.)
  • Bold, italic, underline, strikethrough
  • Ordered and unordered lists
  • Hyperlinks and images
  • Tables with alignment
  • Block quotes and code blocks
  • Footnotes and references
  • Key-value mappings (dictionaries)
  • Sequences (lists/arrays)
  • Nested structures via indentation
  • Multi-line strings (literal and folded)
  • Anchors and aliases for references
  • Comments with # prefix
  • Multiple documents in one file (---)
  • Type inference (strings, numbers, booleans)
Advantages
  • Rich formatting in plain text
  • Human-readable source
  • Native support in Redmine
  • Generates clean HTML
  • Compact and expressive syntax
  • Good table support
  • Shorter file extension than .yaml
  • Preferred by Docker Compose and Rails
  • Extremely human-readable
  • Minimal syntax overhead
  • Widely used in CI/CD pipelines
  • Superset of JSON
Disadvantages
  • Less popular than Markdown
  • Limited tooling ecosystem
  • Learning curve for new users
  • Not supported by GitHub/GitLab
  • Fewer parsers available
  • Indentation-sensitive (whitespace errors)
  • Implicit typing can cause surprises
  • Shorter extension may cause ambiguity
  • Complex spec for edge cases
  • No built-in schema validation standard
Common Uses
  • Redmine wiki pages and issues
  • Textpattern CMS content
  • Technical documentation
  • Blog publishing platforms
  • Web content authoring
  • Docker Compose (docker-compose.yml)
  • Ruby on Rails (database.yml, config)
  • GitHub Actions (.github/workflows/*.yml)
  • Travis CI (.travis.yml)
  • Ansible playbooks (*.yml)
  • Symfony, Laravel configuration
Best For
  • Redmine project management
  • Formatted web content authoring
  • Quick rich text creation
  • CMS-based publishing
  • Docker and container configuration
  • CI/CD pipeline definitions
  • Rails application settings
  • DevOps automation files
Version History
Introduced: 2002 (Dean Allen)
Current Version: Textile 2
Status: Stable, maintained
Evolution: Minor updates, stable spec
Introduced: 2001 (Clark Evans, Ingy dot Net, Oren Ben-Kiki)
Current Version: YAML 1.2.2 (2021)
Status: Stable, actively maintained
Extension Note: .yml widely adopted since early 2000s
Software Support
Redmine: Native support
Textpattern: Native support
Ruby: RedCloth library
Other: PHP Textile, Python textile
Python: PyYAML, ruamel.yaml
Ruby: Psych (stdlib)
Docker: Native (docker-compose.yml)
Other: Go, Java, Node.js, .NET libraries

Why Convert Textile to YML?

Converting Textile to YML is ideal when you need to extract structured data from Textile-formatted documents and save it with the .yml extension, which is the convention used by many popular tools. Docker Compose, Ruby on Rails, Travis CI, GitHub Actions, and other platforms specifically expect .yml files, making this conversion directly applicable to DevOps and development workflows.

The .yml extension is functionally identical to .yaml -- both follow the same YAML specification and are parsed by the same libraries. The choice between .yml and .yaml is purely a convention. Docker Compose uses docker-compose.yml, Rails uses database.yml, and GitHub Actions uses .yml by default. Our converter outputs the file with the .yml extension to match these conventions.

Textile documents from Redmine often contain configuration data, deployment notes, server settings, and other structured information in table and list format. Converting this to YML makes the data directly usable in modern DevOps pipelines without manual reformatting. The clean, indentation-based output is easy to read and edit by hand.

Key Benefits of Converting Textile to YML:

  • Convention Matching: .yml extension expected by Docker, Rails, CI/CD tools
  • DevOps Integration: Direct use in Docker Compose, GitHub Actions, Travis CI
  • Clean Output: Properly indented, human-readable YML data
  • Structured Data: Tables and lists converted to mappings and sequences
  • Configuration Ready: Output usable as application configuration
  • Same as YAML: Full YAML 1.2 specification compliance
  • Rails Compatible: Direct use in Ruby on Rails config files

Practical Examples

Example 1: Deployment Spec from Wiki

Input Textile file (deploy.textile):

h1. Production Deployment

h2. Services

|_. Name |_. Image |_. Port |
| nginx | nginx:alpine | 80 |
| app | myapp:latest | 3000 |
| redis | redis:7 | 6379 |

h2. Volumes

* /data/nginx/conf:/etc/nginx/conf.d
* /data/app/logs:/app/logs
* redis-data:/data

Output YML file (deploy.yml):

document:
  title: "Production Deployment"

services:
  - name: "nginx"
    image: "nginx:alpine"
    port: 80
  - name: "app"
    image: "myapp:latest"
    port: 3000
  - name: "redis"
    image: "redis:7"
    port: 6379

volumes:
  - "/data/nginx/conf:/etc/nginx/conf.d"
  - "/data/app/logs:/app/logs"
  - "redis-data:/data"

Example 2: CI/CD Pipeline Notes

Input Textile file (pipeline.textile):

h1. CI Pipeline Configuration

h2. Build Stage

# Install dependencies
# Run linter
# Execute unit tests

h2. Deploy Stage

# Build Docker image
# Push to registry
# Update Kubernetes deployment

Output YML file (pipeline.yml):

document:
  title: "CI Pipeline Configuration"

build_stage:
  - "Install dependencies"
  - "Run linter"
  - "Execute unit tests"

deploy_stage:
  - "Build Docker image"
  - "Push to registry"
  - "Update Kubernetes deployment"

Example 3: Application Settings

Input Textile file (settings.textile):

h1. Application Settings

h2. Database

|_. Key |_. Value |
| adapter | postgresql |
| host | localhost |
| port | 5432 |
| database | myapp_production |
| pool | 25 |

h2. Cache

|_. Key |_. Value |
| store | redis |
| url | redis://localhost:6379/0 |
| ttl | 3600 |

Output YML file (settings.yml):

document:
  title: "Application Settings"

database:
  adapter: "postgresql"
  host: "localhost"
  port: 5432
  database: "myapp_production"
  pool: 25

cache:
  store: "redis"
  url: "redis://localhost:6379/0"
  ttl: 3600

Frequently Asked Questions (FAQ)

Q: What is the difference between YML and YAML?

A: YML and YAML are the exact same format -- the only difference is the file extension (.yml vs .yaml). Both follow the YAML specification and are parsed identically by all YAML libraries. The .yml extension is commonly used by Docker Compose, Ruby on Rails, Travis CI, and GitHub Actions. The .yaml extension is officially recommended by the YAML specification.

Q: Why use .yml instead of .yaml?

A: The .yml extension is shorter and is the convention used by many popular tools. Docker Compose expects docker-compose.yml, Rails uses database.yml, GitHub Actions uses .yml for workflows, and Travis CI uses .travis.yml. Using .yml ensures compatibility with these tools' naming conventions and expectations.

Q: How does the converter handle Textile tables?

A: Textile tables with header rows are converted to YML lists of mappings, where each row becomes a mapping with keys derived from the header columns. Two-column tables with key-value patterns become simple YML mappings. This intelligent mapping ensures the data is well-structured in the YML output.

Q: Can I use the output directly in Docker Compose?

A: The converted YML is valid YAML, but Docker Compose requires a specific schema (services, volumes, networks, etc.). The output provides structured data that you can adapt to Docker Compose format. For Textile documents that describe service configurations, the conversion provides a strong starting point.

Q: Does the converter handle indentation correctly?

A: Yes, the converter produces properly indented YML using 2-space indentation, which is the most common convention. YAML is whitespace-sensitive, so correct indentation is critical. The output is guaranteed to be valid and parseable by any YAML library.

Q: Are numbers automatically typed in the YML output?

A: Yes, the converter performs type detection. Numeric values from Textile tables are represented as YAML numbers (without quotes), boolean-like values can be represented as YAML booleans, and text values are properly quoted strings. This ensures the YML data has correct types for programmatic use.

Q: Can I convert Textile files from Redmine to YML?

A: Yes! Our converter supports all standard Textile syntax used in Redmine, including wiki pages, issue descriptions, and project documentation. The Textile content is parsed and converted into structured YML output suitable for configuration files, data migration, or any other use case requiring structured data.

Q: What tools can open YML files?

A: YML files can be opened with any text editor (VS Code, Sublime Text, vim, nano, Notepad++). VS Code and other modern editors provide syntax highlighting, validation, and auto-completion for YML files. Additionally, any YAML library in Python (PyYAML), Ruby (Psych), JavaScript (js-yaml), or other languages can parse YML files programmatically.