Convert INI to JSON

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

INI vs JSON Format Comparison

Aspect INI (Source Format) JSON (Target Format)
Format Overview
INI
Initialization File

Plain text configuration format using sections and key-value pairs. Originally popularized by Windows but now used across platforms for application settings in PHP, Python, Git, MySQL, and many other tools. Simple, human-readable, and easy to edit.

Configuration Format Plain Text
JSON
JavaScript Object Notation

Lightweight data interchange format based on a subset of JavaScript. Uses key-value pairs, arrays, and nested objects to represent structured data. The dominant format for web APIs, configuration files, and data exchange between systems worldwide.

Data Interchange API Standard
Technical Specifications
Structure: Sections with key-value pairs
Encoding: UTF-8 / ASCII plain text
Format: Human-readable text file
Comments: Semicolon (;) or hash (#)
Extensions: .ini, .cfg, .conf
Structure: Nested objects and arrays
Encoding: UTF-8 (default per RFC 8259)
Format: Text-based structured data
Standard: ECMA-404, RFC 8259
Extensions: .json
Syntax Examples

INI uses sections and key-value pairs:

[database]
host = localhost
port = 3306
name = myapp_db
; Read replicas
read_only = true

JSON uses objects and typed values:

{
  "database": {
    "host": "localhost",
    "port": 3306,
    "name": "myapp_db",
    "read_only": true
  }
}
Content Support
  • Section headers in brackets
  • Key-value pairs (key = value)
  • Inline and full-line comments
  • String values only (no data types)
  • No nesting or hierarchy
  • No binary data support
  • Typed data (strings, numbers, booleans, null)
  • Nested objects for hierarchical data
  • Arrays for ordered collections
  • Unicode string support
  • No comments (by specification)
  • Strict syntax validation
  • Language-independent data types
Advantages
  • Extremely simple and readable
  • Easy to create and edit manually
  • Lightweight file size
  • Universal parser support
  • No dependencies required
  • Version control friendly
  • Native support in all programming languages
  • Data type support (numbers, booleans)
  • Nested structures and arrays
  • Standard format for REST APIs
  • Schema validation (JSON Schema)
  • Compact yet human-readable
  • Streaming parsers for large data
Disadvantages
  • No data typing (everything is a string)
  • No nested structures or arrays
  • No standard specification
  • Limited to flat key-value data
  • No formatting or rich content
  • No comment support in standard JSON
  • Strict syntax (trailing commas not allowed)
  • No date/time native type
  • Verbose for deeply nested data
  • Keys must be quoted strings
Common Uses
  • Application configuration files
  • Windows system settings
  • PHP configuration (php.ini)
  • Git configuration (.gitconfig)
  • MySQL settings (my.ini)
  • REST API request/response data
  • Application configuration (package.json)
  • Database document storage (MongoDB)
  • Inter-service communication
  • Frontend/backend data exchange
  • Cloud service configuration (AWS, GCP)
Best For
  • Application settings storage
  • Simple configuration needs
  • Quick manual editing
  • Cross-platform config files
  • API data exchange
  • Complex configuration with nesting
  • Type-safe data representation
  • Modern application configuration
Version History
Origin: 1980s (MS-DOS/Windows)
Standardization: No formal specification
Status: Widely used, de facto standard
Evolution: Stable, no major changes
Created: 2001 (Douglas Crockford)
ECMA-404: 2013 (First standardization)
RFC 7159: 2014 (IETF standard)
RFC 8259: 2017 (Current specification)
Software Support
Editors: Any text editor
Languages: Python, PHP, Java, C#, etc.
OS Support: All platforms natively
Tools: Notepad, VS Code, vim, nano
Languages: All (built-in or standard library)
Editors: VS Code, Sublime, WebStorm
Validators: JSONLint, JSON Schema validators
Tools: jq, Postman, browser DevTools

Why Convert INI to JSON?

Converting INI files to JSON is one of the most practical configuration format migrations. JSON offers data typing, nested structures, and array support that INI lacks, making it the preferred format for modern applications, web APIs, and cloud-based services. This conversion upgrades flat INI key-value pairs into properly structured JSON objects where sections become nested objects and values gain appropriate data types.

INI files store all values as strings, meaning "3306" and "true" are indistinguishable from regular text. JSON, however, natively supports numbers, booleans, null values, and strings, allowing parsers to correctly interpret data types without additional logic. The converter intelligently detects and converts numeric values, boolean flags, and null/empty values to their proper JSON types, producing cleaner, more useful output.

Modern development ecosystems heavily rely on JSON for configuration. Node.js uses package.json, Docker uses docker-compose.json, AWS CloudFormation uses JSON templates, and virtually every REST API communicates in JSON. By converting INI to JSON, legacy configuration files become compatible with these modern tools and workflows, enabling automation, validation with JSON Schema, and integration with configuration management systems.

The structured nature of JSON also facilitates programmatic access to configuration data. While INI parsers vary in behavior across languages, JSON parsing is standardized and produces consistent results everywhere. This means a JSON configuration file will be interpreted identically in Python, JavaScript, Java, Go, or any other language, eliminating cross-platform parsing discrepancies common with INI files.

Key Benefits of Converting INI to JSON:

  • Data Type Support: Numbers, booleans, and null values properly typed
  • Nested Structures: INI sections become JSON objects with hierarchical organization
  • API Compatibility: JSON is the standard format for REST APIs and microservices
  • Schema Validation: Validate configuration structure using JSON Schema
  • Universal Parsing: Every programming language has built-in JSON support
  • Modern Tooling: Compatible with jq, Postman, and configuration management tools
  • Cloud Native: Required format for AWS, GCP, Azure configuration templates

Practical Examples

Example 1: Database Configuration

Input INI file (database.ini):

[database]
host = localhost
port = 3306
name = myapp_db
max_connections = 100
ssl_enabled = true

[cache]
driver = redis
host = 127.0.0.1
port = 6379
ttl = 3600

Output JSON file (database.json):

{
  "database": {
    "host": "localhost",
    "port": 3306,
    "name": "myapp_db",
    "max_connections": 100,
    "ssl_enabled": true
  },
  "cache": {
    "driver": "redis",
    "host": "127.0.0.1",
    "port": 6379,
    "ttl": 3600
  }
}

Example 2: Application Settings Migration

Input INI file (app.ini):

[general]
app_name = TaskManager
version = 3.0
debug = false

; Authentication settings
[auth]
provider = oauth2
token_expiry = 7200
require_mfa = true
max_attempts = 5

Output JSON file (app.json):

{
  "general": {
    "app_name": "TaskManager",
    "version": "3.0",
    "debug": false
  },
  "auth": {
    "provider": "oauth2",
    "token_expiry": 7200,
    "require_mfa": true,
    "max_attempts": 5
  }
}

Example 3: Multi-Environment Config

Input INI file (environments.ini):

[production]
api_url = https://api.example.com
workers = 8
log_level = error
enable_cache = true

[development]
api_url = http://localhost:3000
workers = 1
log_level = debug
enable_cache = false

Output JSON file (environments.json):

{
  "production": {
    "api_url": "https://api.example.com",
    "workers": 8,
    "log_level": "error",
    "enable_cache": true
  },
  "development": {
    "api_url": "http://localhost:3000",
    "workers": 1,
    "log_level": "debug",
    "enable_cache": false
  }
}

Frequently Asked Questions (FAQ)

Q: How are INI sections mapped to JSON?

A: Each INI section (e.g., [database]) becomes a JSON object key, with its key-value pairs becoming properties of that object. The result is a JSON object where top-level keys are section names and their values are objects containing the section's settings. This creates a natural one-level nesting that mirrors the INI structure.

Q: Are INI values automatically converted to JSON data types?

A: Yes, the converter intelligently detects value types. Numeric values like "3306" become JSON numbers (3306), boolean values like "true" and "false" become JSON booleans, and all other values remain as JSON strings. This produces a properly typed JSON output that can be parsed without additional type conversion.

Q: What happens to INI comments during conversion?

A: Standard JSON does not support comments, so INI comments (lines starting with ; or #) are not included in the JSON output. If you need to preserve comments, consider converting to JSON5 or JSONC (JSON with Comments) formats instead, or document the comments separately.

Q: Can JSON handle all INI file structures?

A: Yes, JSON can represent all INI structures and more. INI's flat section/key-value model maps perfectly to JSON objects. Additionally, JSON supports features INI lacks, such as arrays, nested objects, and typed values, making it a strict superset of what INI can represent.

Q: Is the JSON output minified or pretty-printed?

A: The converter produces pretty-printed (indented) JSON for readability. Each level is indented with 2 or 4 spaces, making it easy to read and edit. If you need minified JSON for production use, you can use tools like jq or any JSON minifier to compress the output.

Q: How do I validate the resulting JSON?

A: You can validate JSON using online tools like JSONLint, command-line tools like jq (cat file.json | jq .), or built-in language validators. For structural validation, create a JSON Schema that defines the expected configuration format and validate against it.

Q: Can I use the JSON output with Docker or Kubernetes?

A: Yes, JSON is natively supported by Docker (docker-compose), Kubernetes (manifests can be JSON), and virtually all container orchestration tools. The converted JSON configuration can be directly used or easily adapted for these platforms with minimal modifications.

Q: What if my INI file has duplicate keys in the same section?

A: JSON objects cannot have duplicate keys (the last value wins per RFC 8259). If your INI file contains duplicate keys within a section, the converter will use the last occurrence of each key. To preserve all values, consider converting duplicate keys into JSON arrays before or during the conversion process.