Convert Azure DevOps Pipeline JSON to YAML — Free Online
- Paste a JSON pipeline export and convert to YAML in your browser — works for the Azure DevOps classic pipeline export format.
- Saves manual migration time from classic UI pipelines to YAML-in-repo pipelines.
- Post-conversion cleanup is required: step names and task inputs need to match YAML pipeline syntax.
Table of Contents
Azure DevOps is migrating teams from classic UI pipelines to YAML-in-repo pipelines. If you export a classic pipeline to JSON (via API or internal tools), converting the JSON to YAML gets you halfway to a repo-native pipeline. The conversion itself is one paste; the post-conversion mapping from classic task definitions to YAML task syntax is the real work. This guide covers both.
The Format Flip — 15 Seconds
- Export your classic pipeline to JSON via Azure DevOps REST API or the "Export" option.
- Paste into the converter.
- Click Convert. Copy the YAML.
- Save as
azure-pipelines.ymlin your repo.
At this point you have YAML — but it won't run as-is. Classic pipeline JSON uses different property names than YAML pipelines. Section 2 covers the mapping.
Classic JSON Properties vs YAML Equivalents
The classic pipeline JSON and the YAML pipeline schema are both Azure DevOps, but not the same schema. Key mappings:
| Classic JSON | YAML Equivalent |
|---|---|
| phases / phaseType | stages / jobs |
| tasks (array of objects) | steps (array of tasks) |
| task.id (UUID) | task: TaskName@version |
| inputs (map) | inputs: (map, same) |
| queue.name | pool: vmImage |
After format conversion, you'll hand-rewrite these mappings. The converter gives you the text to edit, not a drop-in replacement.
Sell Custom Apparel — We Handle Printing & Free ShippingWhy Bother Converting Format First
Three reasons converting to YAML first is still valuable:
- Diff visibility. A YAML version of the classic pipeline lets you see the structure clearly. Easier to map task by task.
- Incremental migration. Commit the initial YAML as a draft, iterate in PRs, validate piece by piece.
- Comments. YAML allows
#comments for noting which tasks need attention. JSON doesn't.
Skipping the format flip and writing YAML from scratch is fine if the pipeline is small. For a 300-task classic pipeline, converting first and then mapping task by task is faster.
Modern-Native YAML Pipeline Example
A finished YAML pipeline (not a conversion — the target end state):
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: UseNode@1
inputs:
version: "20.x"
- script: npm ci
- script: npm test
This is what your converted YAML should look like after the mapping work. Short, clear, easy to review in PRs.
When the Manual-Rewrite Path Is Faster
If your classic pipeline has fewer than ~15 tasks, writing the YAML pipeline from scratch is often faster than converting JSON and rewriting tasks. The YAML schema is well-documented and Azure DevOps provides a built-in assistant for common tasks.
Use the converter when:
- The classic pipeline has 30+ tasks.
- You want a working draft before manual cleanup.
- You need to preserve the exact step order and conditional logic for audit.
Skip the converter when the pipeline is small enough to rewrite by hand.
Start the Classic-to-YAML Migration
Paste your JSON pipeline export, click Convert. Get a working YAML draft to refine.
Open Free JSON to YAML ConverterFrequently Asked Questions
Does Azure DevOps auto-convert classic pipelines to YAML?
Not reliably. Microsoft provides an "Export to YAML" option for some pipelines, but the output often needs manual fixes. A JSON export + manual conversion gives you more control.
Is the YAML output ready to run on Azure DevOps?
Not directly. The classic JSON schema differs from the YAML pipeline schema — specifically task IDs map to task names, phases become stages/jobs. Format conversion is step 1; task-property mapping is step 2.
Can I convert JSON in the reverse — YAML pipeline to classic?
Yes — our YAML to JSON converter does the reverse format flip. But classic pipelines are being deprecated; going backward from YAML to classic is unusual.
What about multi-stage classic pipelines?
Classic multi-stage pipelines export as JSON arrays of stages. Convert the whole JSON to YAML, then map each stage to a YAML stages block. Works the same as single-stage, just more mapping work.

