Instantly convert YAML to JSON in your browser. Supports Kubernetes manifests, Docker Compose files, Ansible playbooks, GitHub Actions workflows, Helm charts, and any.yml or.yaml file. No upload, no sign-up, 100% private and offline-capable.
A YAML to JSON converter is a developer utility that translates data written in YAML (YAML Ain't Markup Language) into the equivalent JSON (JavaScript Object Notation) structure. These two formats represent the same underlying data model - objects, arrays, strings, numbers, booleans, and nulls - but with entirely different syntax. YAML uses indentation and minimal punctuation for human readability, while JSON uses explicit braces, brackets, and quotes for machine precision.
YAML is the de facto configuration format for the modern cloud-native software stack. Kubernetes manifests, Docker Compose service definitions, GitHub Actions workflows, GitLab CI pipelines, CircleCI configs, Ansible playbooks, Helm chart values files, Terraform variable definitions, and OpenAPI / Swagger specifications are all written in YAML. JSON, by contrast, dominates the web's data layer - REST APIs, webhooks, NoSQL databases, JavaScript front-end frameworks, and configuration management systems that programmatically consume structured data all speak JSON.
The friction between these two worlds is a daily reality for DevOps engineers, SREs, backend developers, and platform teams. A Kubernetes deployment defined in YAML needs to be passed as a JSON payload to a custom operator. A Docker Compose file needs to be analyzed by a JavaScript tool that only reads JSON. An Ansible inventory file needs to feed a REST API. This online tool closes that gap in seconds - paste your YAML, copy the JSON, move on. All processing happens entirely in your browser, so secrets, API keys, internal hostnames, and other sensitive configuration data never leave your machine.
.yaml or .yml file and paste it into the left input panel. You can also open your file in any text editor (VS Code, Nano, Notepad), select all, copy, and paste. Click the Sample button to load a realistic demo document and immediately see how the conversion works before using your own data..json file, akubectl patch command, a Postman request body, a MongoDB import, a Terraform JSON variable file, or wherever your workflow requires it. Use the fullscreen button to expand the output panel for easier reading of complex, deeply nested configurations.The output updates automatically 300 ms after you stop typing, giving you an instant round-trip without re-clicking Convert on every edit. Essential when iterating on a Kubernetes manifest or Helm values file and checking the JSON representation after each change.
All parsing runs inside your browser's JavaScript engine. Your YAML content - which frequently contains database passwords, TLS certificates, secret environment variables, internal service names, and infrastructure topology - is never transmitted to any server. This satisfies enterprise security policies and zero-trust network requirements.
Your YAML input is saved to LocalStorage and restored automatically for 30 days. Close the tab accidentally during a long debugging session and your configuration file will still be there when you return. The cache is cleared automatically after 30 days to avoid stale data accumulation.
Drag the divider between the YAML input and JSON output panels to allocate more screen space to whichever side you need. The split ratio is saved in LocalStorage and restored on your next visit, so your preferred workspace layout is always ready.
Search any key name or value within the JSON output without leaving the tool. Matching text is highlighted inline. Critical when verifying that specific fields in a large Kubernetes manifest (e.g., image tags, resource limits, namespace names) survived the conversion correctly.
Expand the JSON output panel to fill the entire viewport - ideal for reading, screenshotting, or reviewing the full structure of complex configuration objects like a Kubernetes StatefulSet spec or a multi-service Docker Compose definition without horizontal truncation.
Syntax errors in the YAML input trigger an immediate inline error message below the input panel. The most common causes - mixed tabs and spaces, incorrect indentation depth, colons missing after keys, unquoted special characters - are caught before you waste time debugging a malformed JSON output in a downstream tool.
Since the entire tool runs in the browser, it works on any device - desktop, laptop, tablet, or mobile - and continues to function offline after the page has loaded. Bookmark it on a secure workstation or air-gapped server for access without internet connectivity.
The following example shows a realistic Kubernetes-style configuration in YAML and its equivalent JSON output. Every YAML construct - nested mappings, sequences, scalar values, and comments - is handled correctly.
YAML Input
# Kubernetes Deployment config
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: production
labels:
app: my-app
version: "1.4.2"
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
spec:
containers:
- name: app
image: my-app:1.4.2
ports:
- containerPort: 8080
env:
- name: NODE_ENV
value: production
resources:
requests:
cpu: "250m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"JSON Output
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "my-app",
"namespace": "production",
"labels": {
"app": "my-app",
"version": "1.4.2"
}
},
"spec": {
"replicas": 3,
"selector": {
"matchLabels": {
"app": "my-app"
}
},
"template": {
"spec": {
"containers": [
{
"name": "app",
"image": "my-app:1.4.2",
"ports": [
{ "containerPort": 8080 }
],
"env": [
{
"name": "NODE_ENV",
"value": "production"
}
],
"resources": {
"requests": {
"cpu": "250m",
"memory": "128Mi"
},
"limits": {
"cpu": "500m",
"memory": "256Mi"
}
}
}
]
}
}
}
}Observe that comments (the # Kubernetes Deployment configline) are stripped in the JSON output since JSON has no comment syntax. All data - nested objects, arrays of containers, string scalars, and numeric values like replicas: 3 - is preserved with correct types.
Kubernetes accepts both YAML and JSON for resource definitions, but many programmatic tools and client libraries work exclusively with JSON. The Kubernetes API server itself communicates in JSON - YAML files are converted to JSON internally by kubectlbefore being sent to the API. Custom operators built with the Kubernetes Go client, Node.js client, or Python client (kubernetes-client) often construct or patch resources using JSON payloads. The kubectl patch command's--type=merge and--type=strategic flags accept JSON patch documents. Converting your YAML manifest to JSON first lets you build these payloads interactively without writing a parser.
Helm uses YAML for values.yaml files, but several third-party Helm tooling projects and policy engines (like Conftest with OPA/Rego policies, or Datree) accept JSON for programmatic validation. Converting a Helm values file to JSON lets you query it with jq, validate it against a JSON Schema, or feed it into a policy-as-code pipeline that expects structured JSON input.
Docker Compose files are YAML, but custom CI/CD automation scripts written in JavaScript, TypeScript, or Python often need to parse and manipulate service definitions programmatically. Convertingdocker-compose.yml to JSON lets you use standard JSON tooling to extract service names, image tags, environment variables, volume mounts, and port mappings without pulling in a YAML parsing dependency.
GitHub Actions workflow files and GitLab CI configuration files are both YAML. When building tools that analyze, visualize, lint, or generate these workflows programmatically - for example, a dashboard that maps job dependencies, a security scanner that checks for unsafe uses of ${{{ github.event.inputs }}}}, or a template engine that generates workflows from a JSON schema - having the workflow in JSON form makes it immediately consumable by any JSON-aware tool without introducing a YAML parsing dependency.
Ansible playbooks, host variables, and group variables are all stored as YAML files. When integrating Ansible with external systems - a CMDB (Configuration Management Database), a service catalog, a monitoring platform, or a ticket management system via REST API - you often need to represent host facts, variable values, or task results as JSON. Converting the relevant YAML structures to JSON provides a clean interface to these integrations.
OpenAPI 3.x and Swagger 2.0 specifications can be written in either YAML or JSON. Many API tooling platforms, code generators (openapi-generator, swagger-codegen), and API gateways accept only one format. Converting an OpenAPI spec from YAML to JSON (or vice versa) is a routine step when integrating with tools that do not support both. This converter handles the full depth and breadth of a typical OpenAPI document including$ref chains, nested schema objects, and security definition blocks.
While Terraform's native format is HCL, many Terraform modules use YAML variable files (processed by the yamldecode()function) for environment-specific configurations. Converting these YAML variable files to JSON helps you inspect, validate, and version their structure using JSON tooling, or feed them into Terraform's JSON-native variable format for providers that require it.
Many application frameworks - Spring Boot, Rails, Node.js apps withconfig or convict, Python apps with dynaconf - support both YAML and JSON configuration files. During development or debugging, it is sometimes useful to see the YAML configuration rendered as JSON to verify that environment variable overrides, nested merge logic, or type coercions produced the expected resolved configuration object.
YAML 1.2 is technically a superset of JSON - every valid JSON document is also valid YAML. But the two formats serve different audiences and purposes, which is why both remain widely used despite significant overlap.
jq, JSONPath, and JSON SchemaThe practical recommendation: write and maintain configuration in YAML (for human readability and comments), and convert to JSON automatically as a build or deployment step when tools, APIs, or databases require it. Keep YAML as the source of truth; treat JSON as the generated artifact.
YAML's flexibility is both its greatest strength and its most common source of bugs. Understanding these edge cases helps you produce clean JSON output every time.
YAML strictly forbids tab characters for indentation. Only spaces are allowed. This is the single most frequent cause of YAML parse errors. Many text editors - especially those configured for Python or Makefile editing - insert literal tab characters when you press Tab. Configure your editor to use spaces for .yml and.yaml files, or runexpand -t 2 file.yaml to convert tabs to spaces before pasting into this tool.
JSON has no comment syntax. All YAML comments - lines starting with# and inline comments after values - are removed during conversion. This is by design and by the JSON specification. If you need to preserve documentation alongside the data, keep the YAML as the authoritative source and generate JSON only for consumption by tools that require it.
YAML supports node reuse via anchors (&anchor_name) and aliases (*anchor_name). In the JSON output, aliases are fully resolved and expanded into their referenced values - JSON has no concept of references or shared nodes. This means a YAML file that uses anchors to avoid repeating a block will produce a JSON file where that block appears multiple times in full. The data is equivalent; only the compactness is lost.
YAML 1.1 - the version implemented by most tools including Go'sgopkg.in/yaml.v2, Python'sPyYAML, and Ruby'sPsych - interprets the valuesyes, no,on, off,true, and false as booleans. Country code abbreviations like NO (Norway) and ON (Ontario) have historically been misinterpreted as boolean values. YAML 1.2 (the current specification) restricts booleans to only true and false. If your YAML is processed by a YAML 1.1 tool and you need to preserve these values as strings, wrap them in quotes:"yes","NO","on".
YAML supports two multi-line string styles. The literal block scalar (|) preserves newlines exactly. The folded block scalar (>) folds newlines into spaces. In JSON, both are represented as regular strings with embedded\n characters (for the literal style) or as single-line strings (for the folded style). Multi-line strings in YAML configuration - often used for inline shell scripts in GitHub Actions, SQL queries in Ansible tasks, or certificate PEM blocks in Kubernetes secrets - convert cleanly to their JSON string equivalents.
A single YAML file can contain multiple documents separated by---. This is common in Kubernetes resource files that bundle multiple objects (e.g., a Deployment, a Service, and a ConfigMap) in a single file. This tool processes the first document in a stream. For multi-document files, split them at the --- boundaries before pasting, or use theyq command-line tool which handles multi-document streams natively.
YAML performs implicit type coercion. A value like10001 will be parsed as an integer, not a string. If you need a value to be a JSON string rather than a number - for example, a ZIP code, a version string like1.0 that should not become a float, or a numeric ID that must stay a string - wrap it in quotes in the YAML source: zip: "10001". The converter will correctly output "10001" as a JSON string.
For automated or recurring conversions - build pipelines, deployment scripts, data processing jobs - use these code snippets. Use this online tool for interactive one-off conversions; use the code below when conversion must run programmatically.
const fs = require("fs");
const yaml = require("js-yaml");
const yamlContent = fs.readFileSync("config.yaml", "utf8");
const jsonObject = yaml.load(yamlContent); // Parse YAML → JS object
const jsonString = JSON.stringify(jsonObject, null, 2); // Serialize → JSON
fs.writeFileSync("config.json", jsonString);
console.log("Converted successfully");Install: npm install js-yaml. js-yaml is the most widely adopted YAML parser in the Node.js ecosystem and implements YAML 1.2.
import yaml
import json
with open("config.yaml", "r") as f:
data = yaml.safe_load(f) # safe_load avoids arbitrary code execution
with open("config.json", "w") as f:
json.dump(data, f, indent=2)
print(f"Converted {len(data)} top-level keys")Install: pip install pyyaml. Always usesafe_load() instead ofload() to prevent arbitrary object deserialization when processing YAML from untrusted sources.
from ruamel.yaml import YAML
import json
yaml = YAML()
with open("config.yaml") as f:
data = yaml.load(f)
# Convert CommentedMap/CommentedSeq to plain dicts/lists for JSON serialization
def to_plain(obj):
if isinstance(obj, dict):
return {k: to_plain(v) for k, v in obj.items()}
if isinstance(obj, list):
return [to_plain(i) for i in obj]
return obj
with open("config.json", "w") as f:
json.dump(to_plain(data), f, indent=2)# Install: brew install yq (macOS)
# Install: snap install yq (Linux)
# Convert a single YAML file to JSON
yq -o=json config.yaml > config.json
# Convert all YAML files in a directory
for f in *.yaml; do
yq -o=json "$f" > "$(basename "$f" .yaml).json"
done
# Extract a specific field and output as JSON
yq -o=json '.spec.containers[0]' deployment.yamlyq is the most powerful CLI tool for YAML processing. It supports multi-document files, in-place editing, complex queries, and full YAML 1.2 compliance. It is the recommended tool for production pipeline use.
package main
import (
"encoding/json"
"fmt"
"os"
"gopkg.in/yaml.v3"
)
func main() {
yamlData, _ := os.ReadFile("config.yaml")
var obj interface{}
yaml.Unmarshal(yamlData, &obj)
jsonData, _ := json.MarshalIndent(obj, "", " ")
fmt.Println(string(jsonData))
}Yes, this is one of the most common use cases. Paste the full content of any .yaml Kubernetes resource file - Deployment, Service, ConfigMap, Secret, StatefulSet, Ingress, or any custom resource definition - and the tool will produce the equivalent JSON object. The output is compatible withkubectl patch --type=merge, the Kubernetes REST API, and Kubernetes client libraries in all languages.
Yes. YAML's nested mappings (objects) and sequences (arrays) are fully supported at any depth. Deeply nested structures like a Kubernetes pod spec with containers, environment variables, volume mounts, resource requests, and liveness probes convert correctly to nested JSON objects and arrays.
All YAML comments are stripped. JSON does not support comments, so there is no valid way to preserve them in the output. If you need to keep comments alongside the configuration data, maintain the YAML as your source of truth and use this converter to generate the JSON artifact on demand.
In YAML 1.1 (used by most tools), yes, no,on, off,true, and false are all treated as boolean values and converted to JSONtrue or false. If you need these values to remain as strings in the JSON output, quote them in the YAML source: active: "yes" produces"active": "yes" in JSON.
Yes. Open your docker-compose.yml ordocker-compose.yaml file in a text editor, copy all contents, paste into this tool, and copy the JSON output. The resulting JSON represents the full Compose configuration including services, volumes, networks, environment variables, and port mappings.
Yes. The output is strict RFC 8259 compliant JSON. The green checkmark confirms that JSON.parse() will succeed on the output without errors. The output is also compatible with JSON Schema validators, jq, JSONPath tools, and all standard JSON parsing libraries.
The tool processes a single YAML document. Multi-document files containing multiple documents separated by --- - common in Kubernetes resource bundles - will have only the first document converted. Split the file at each --- boundary before pasting, converting one document at a time. For automated multi-document processing, use the yq CLI tool.
No data is transmitted to any server. The YAML parsing and JSON serialization run entirely inside your browser's JavaScript engine. This makes the tool safe for YAML files that contain database passwords, TLS private keys, API tokens, internal hostnames, and other sensitive infrastructure configuration that must not leave your network perimeter.
The best CLI option is yq:yq -o=json input.yaml > output.jsonAlternative using Python (no dependencies beyond the standard library and PyYAML):python3 -c "import sys,yaml,json; print(json.dumps(yaml.safe_load(sys.stdin), indent=2))" < input.yaml > output.json
Yes. OpenAPI 3.x and Swagger 2.0 specifications are valid YAML documents and convert cleanly using this tool. The output JSON can be fed to API code generators, linting tools, API gateways (like AWS API Gateway, Kong, or Azure API Management), and documentation platforms that require JSON format for their import workflows.
Discover more free developer tools that might interest you.
Convert XML data to JSON format
Use ToolConvert CSV data to JSON format
Use ToolConvert array data to visual image representation
Use ToolConvert bitmap images to array data
Use ToolConvert time between different timezones
Use ToolRead the how-to, then come back to this tool when you are ready to run it locally.