Validate GitHub Actions and GitLab CI YAML Online Free
- GitHub Actions (.github/workflows/*.yml) and GitLab CI (.gitlab-ci.yml) are standard YAML — validate syntax by converting to JSON.
- A successful JSON conversion proves the YAML is syntactically valid.
- Common issues: tabs vs. spaces, quoted booleans (on: keyword), incorrect nesting of steps and jobs.
- For schema validation (valid job names, event triggers), use the platform's built-in linter after fixing YAML syntax.
Table of Contents
GitHub Actions workflows and GitLab CI pipelines are written in YAML. A syntax error in these files breaks your entire CI/CD pipeline — the workflow won't run at all, and you may only find out after pushing the commit. The fastest way to catch a YAML syntax error before pushing is to convert the file to JSON in a browser tool.
If the conversion succeeds, the YAML is syntactically valid. If it fails, the error message shows the exact line to fix. This takes 10 seconds and saves the push-wait-fail-fix cycle.
Why YAML Syntax Errors Break CI Pipelines Before They Run
GitHub Actions and GitLab CI parse their YAML before executing any jobs. If the YAML fails to parse, the entire pipeline fails to start — no jobs run, no error output is produced by the runner, and you get a generic "invalid YAML" error in the UI.
Common YAML errors in CI pipelines:
- Tabs instead of spaces — YAML forbids tabs. Many editors insert tabs by default unless configured for spaces.
- on: keyword — In YAML 1.1,
onis a boolean (true). GitHub Actions useson:as a trigger key. If your YAML parser is strict 1.1, this can cause issues. Always quote it:'on':or use the full formtrue:is wrong — just be aware your parser may warn. - Missing space after colon —
name:my-jobis not a key-value pair. Requiresname: my-job. - Wrong indentation of steps —
stepsitems must be at the same indent level, each starting with-. - Special characters in values — colons, hashes, and brackets in unquoted strings cause parse errors.
How to Validate GitHub Actions Workflow YAML Syntax
Open the YAML to JSON converter. Copy your .github/workflows/deploy.yml (or any workflow file) and paste it in. Click Convert.
Success: JSON output appears. The workflow YAML is syntactically valid. You can inspect the structure to verify that your jobs, steps, and triggers are nested correctly.
Failure: An error message appears with a line number. Fix that line in your workflow file and try again.
Example minimal workflow:
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run tests
run: npm test
This converts to JSON cleanly. The JSON shows that on became a key with an object value — confirming the parser handled the trigger block correctly.
Note on on:: The word on is technically a boolean synonym in YAML 1.1, but modern YAML parsers (including GitHub's) treat it as a string key in this context. If your converter errors on on:, wrap it in quotes: 'on':.
How to Validate GitLab CI Pipeline YAML Syntax
GitLab CI's .gitlab-ci.yml is standard YAML. Paste it into the converter the same way — successful JSON conversion confirms valid syntax.
Example GitLab CI snippet:
stages:
- build
- test
- deploy
variables:
NODE_VERSION: "18"
build_job:
stage: build
image: node:18
script:
- npm install
- npm run build
artifacts:
paths:
- dist/
test_job:
stage: test
image: node:18
script:
- npm test
GitLab CI also provides a built-in YAML validator in the UI: CI/CD → Pipelines → Editor → Validate. That validator checks both YAML syntax and GitLab-specific schema (valid stage names, job keywords, etc.). Use the browser converter for fast offline syntax checks; use GitLab's validator for full schema validation before merging.
Common CI Pipeline YAML Mistakes and How to Fix Them
Tabs in indentation:
# Wrong — tab character before runs-on
jobs:
build:
runs-on: ubuntu-latest
# Fix — spaces only
jobs:
build:
runs-on: ubuntu-latest
Special character in run script:
# Wrong — unquoted colon in value
- run: echo Status: done
# Fix — quote the value or use | for multi-line
- run: "echo Status: done"
# Or:
- run: |
echo "Status: done"
Incorrect nesting of steps:
# Wrong — steps at wrong indentation
jobs:
build:
runs-on: ubuntu-latest
steps: # should be indented under build
- run: echo hi
# Fix
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo hi
Quoted boolean where string expected:
# Wrong for CI context continue-on-error: "true" # string, not boolean # Fix continue-on-error: true # boolean
Validate Your CI/CD YAML Right Now
Paste your GitHub Actions or GitLab CI YAML, click Convert. A successful conversion means valid syntax — ready to push.
Open Free YAML to JSON ConverterFrequently Asked Questions
How do I validate GitHub Actions workflow YAML syntax before pushing?
Paste your .github/workflows/*.yml file into a browser-based YAML to JSON converter. If the conversion succeeds, the YAML syntax is valid. If it fails, the error shows the exact line to fix. For schema validation (checking that job names, event triggers, and action references are valid), use the GitHub Actions linter or VS Code extension after fixing syntax errors.
Why does my GitHub Actions workflow fail with "invalid workflow file"?
Usually a YAML syntax error: tabs used for indentation instead of spaces, a colon without a space after it, or an unquoted string containing a special character like # or :. Paste the workflow file into a YAML to JSON converter to see the exact error and line number.
How do I validate .gitlab-ci.yml syntax offline?
Paste the file contents into a browser-based YAML to JSON converter. A successful conversion confirms the YAML syntax is valid. For full GitLab CI schema validation (valid keywords, stage names, job structure), use the GitLab UI validator at CI/CD > Pipelines > Editor > Validate.
Is "on" a valid YAML key in GitHub Actions?
In YAML 1.1, "on" is a synonym for boolean true. GitHub Actions accepts it as a key in this context. If your YAML converter errors on "on:", wrap it in single quotes: 'on':. Most modern YAML parsers handle "on" as a key without issues in this context.

