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

0 errors 0 warnings 0 info

    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.

       
      Next Run Times

      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-namegithub, inputs, vars
      env (top level)github, secrets, inputs, vars
      jobs.<id>.ifgithub, needs, vars, inputs
      jobs.<id>.runs-ongithub, needs, strategy, matrix, vars, inputs
      steps[*].ifgithub, needs, strategy, matrix, job, runner, env, vars, steps, inputs (no secrets)
      steps[*].usesNo expressions at all

      Common Triggers

      Event Runs when
      pushCommits or tags are pushed (filter with branches, tags, paths)
      pull_requestA pull request is opened or updated - read-only token for forks
      pull_request_targetSame, but in the base repo context with secrets - never run PR code
      scheduleOn a UTC cron schedule, default branch only, minimum every 5 minutes
      workflow_dispatchManually from the Actions tab, the API, or the gh CLI, with typed inputs
      workflow_callAnother workflow calls this one as a reusable workflow
      releaseA 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.

      Looking for more developer tools to streamline your workflow?

      Explore our growing collection of free, privacy-focused utilities designed by developers, for developers.

      Discover All RJL.io Tools