GitHub Actions Validator
Workflow YAML Linter & Explorer
Paste a workflow file. Instantly catch invalid triggers, missing runs-on, broken needs, bad cron schedules, permissions mistakes and script-injection risks - with line numbers, a job dependency view, matrix job counts, and snippet builders. 100% client-side. Zero data stored.
GitHub Actions Workflow Validator Tool
Findings
Jobs & Steps
Click any job or step to jump to it in the editor.
Run Order (needs)
Jobs in the same stage can run in parallel; each stage waits for the jobs it needs.
Expressions
Matrix Builder
One variable per row, values separated by commas. Version numbers stay quoted so 3.10 never becomes 3.1.
Schedule (cron) Builder
Five fields, always UTC. Checked with the same rules as the Cron Expression Generator.
Common Use Cases
Fix "Invalid workflow file"
GitHub's error often points at the wrong line or says only "unexpected value". Paste the file here to see the real problem and jump straight to it.
Review Workflow Changes
Check a pull request that edits .github/workflows before merging - including risky patterns like untrusted input in run scripts.
Harden CI Security
Spot write-all tokens, missing permissions blocks, unpinned third-party actions, and pull_request_target workflows that run untrusted code.
Plan Build Matrices
See exactly how many jobs a matrix with include and exclude produces before it eats your Actions minutes, and draft new matrices safely.
Schedule Nightly Jobs
Build a valid schedule trigger, avoid the minute-zero rush, and confirm the expression with the same rules GitHub applies.
Learn Actions Syntax
Start from a template, change it, and read plain-English explanations of each rule as you go - faster than pushing commits to find out.
Workflow Syntax Quick Reference
Context Availability
| Key | Contexts you can use |
|---|---|
| run-name | github, inputs, vars |
| env (top level) | github, secrets, inputs, vars |
| jobs.<id>.if | github, needs, vars, inputs |
| jobs.<id>.runs-on | github, needs, strategy, matrix, vars, inputs |
| steps[*].if | github, needs, strategy, matrix, job, runner, env, vars, steps, inputs (no secrets) |
| steps[*].uses | No expressions at all |
Common Triggers
| Event | Runs when |
|---|---|
| push | Commits or tags are pushed (filter with branches, tags, paths) |
| pull_request | A pull request is opened or updated - read-only token for forks |
| pull_request_target | Same, but in the base repo context with secrets - never run PR code |
| schedule | On a UTC cron schedule, default branch only, minimum every 5 minutes |
| workflow_dispatch | Manually from the Actions tab, the API, or the gh CLI, with typed inputs |
| workflow_call | Another workflow calls this one as a reusable workflow |
| release | A release is published, created, or edited |
Job requirements
Every job needs runs-on and a non-empty steps list - or uses to call a reusable workflow, which then cannot have runs-on or steps.
Step requirements
Every step has exactly one of uses (an action) or run (a shell script). with passes action inputs; env passes variables to scripts.
Ids and names
Job ids and step ids start with a letter or underscore and use only letters, numbers, - and _. Step ids must be unique within a job.
Frequently Asked Questions
Why We Built This GitHub Actions Validator
The feedback loop for GitHub Actions is slow: edit the YAML, commit, push, wait for the workflow to load, read an error that points somewhere near the problem, and repeat. Many mistakes never produce an error at all - a schedule that runs at minute zero and gets delayed, a matrix value of 3.10 that silently becomes 3.1, or a needs entry that quietly skips a job. We built this validator to catch those before the first push.
It goes beyond syntax. Findings explain why something is wrong and how to fix it, every finding jumps to its line, and the jobs, run-order, and expression views show how the workflow actually fits together. Security checks cover script injection, pull_request_target misuse, broad token permissions, and unpinned actions. Cron schedules are validated with the same engine as our Cron Expression Generator, so both tools always agree. Nothing leaves your browser.
The GitHub Actions Validator is part of RJL.io's collection of free developer tools. Build schedules with the Cron Expression Generator, convert configuration with the YAML JSON Converter, and keep common commands handy with the Developer Cheat Sheets.