GitHub Actions Workflow Validator
Validate GitHub Actions workflow YAML for syntax errors and misconfigurations — entirely in your browser
GitHub Actions workflow files have strict YAML structure requirements that aren’t obvious from the documentation. A misplaced runs-on key, a typo in uses:, or an invalid on: trigger silently breaks your pipeline — and you only find out after pushing and waiting for the workflow to fail. This tool validates your workflow YAML locally before you commit.
What Gets Validated
- YAML syntax — Indentation, colons, quotes, duplicate keys
- Workflow structure — Required
onandjobskeys, valid top-level fields (name,permissions,env,defaults,concurrency) - Job configuration —
runs-onvalues,stepsstructure,needsreferences to existing jobs - Step validation —
usesaction format (owner/repo@ref),runandusesmutual exclusivity,withandenvtypes - Trigger validation — Valid event names (
push,pull_request,workflow_dispatch, etc.), branch/path filter syntax - Expression syntax —
${{ }}expression brackets are balanced and placed correctly
Common Mistakes Caught
- Using
on: pushwithbranchesas a string instead of a list - Missing
runs-onin a job definition - Steps with both
usesandrun(only one allowed) - Invalid
cronexpressions inscheduletriggers - Referencing a job in
needsthat doesn’t exist - Using
envat the wrong nesting level
How to Use
- Paste your
.github/workflows/*.ymlcontent into the editor - The validator checks structure and semantics in real time
- Errors and warnings appear with line numbers
- Fix issues before committing to your repository
Why Validate Locally
GitHub only reports workflow syntax errors after you push and the workflow attempts to run. This creates a frustrating feedback loop:
- Push a commit with a workflow change
- Wait for GitHub to pick it up
- See “Invalid workflow file” in the Actions tab
- Fix the typo, push again
- Wait again…
Validating locally before committing saves this entire cycle. Catch structural errors, invalid triggers, and missing references in seconds instead of minutes.
Frequently Asked Questions
Does it validate action versions (e.g., actions/checkout@v4)?
It checks the format of uses references (owner/repo@ref pattern) but doesn’t verify that the action or version actually exists on GitHub.
Can it validate reusable workflows?
Yes. It validates the structure of reusable workflow files including workflow_call trigger inputs and outputs, and workflow_dispatch input definitions.
Does it check if: condition expressions?
It validates that expressions use correct ${{ }} syntax. Full expression evaluation (function calls, context access) is available in the GitHub Actions Expression Evaluator.
Can it validate composite actions (action.yml)?
Yes. The validator checks action.yml files for composite actions, including inputs, outputs, and runs structure with steps definitions.
Is my workflow file sent to a server? No. All validation runs in your browser. Your workflow configuration stays on your device.