jsonschema

The reference implementation of JSON Schema validation for Python, supporting every draft from 3 to 2020-12.

Library
PyPI
v4.26.0
4,993 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
90 /100 Excellent
Development Activity 96
Maintenance 84
Community 80
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
92 /100 Excellent
Architecture 92
Code Quality 94
Innovation 92
Learning Curve 85

jsonschema is the de facto standard library for validating JSON data against JSON Schema documents in Python. It ships full support for Drafts 2020-12, 2019-09, 7, 6, 4, and 3, exposing both a one-line validate() helper and per-draft validator classes for fine-grained control.

Beyond simple pass/fail checks, it offers lazy validation that iteratively reports every error in an instance, programmatic querying of which properties failed, custom type and format checkers, and pluggable reference resolution. It underpins a huge swath of the Python ecosystem, from API frameworks to configuration tooling.

What You Get

  • A single validate() entry point plus dedicated validator classes for JSON Schema Drafts 3, 4, 6, 7, 2019-09, and 2020-12
  • Lazy validation via iter_errors() that reports every validation failure instead of stopping at the first
  • Rich, introspectable ValidationError and ErrorTree objects that pinpoint which schema keyword and instance path failed
  • Optional format validation (email, uri, date-time, and more) through installable format and format-nongpl extras
  • Extensibility hooks for custom validators, type checkers, and reference resolution built on the referencing library

Common Use Cases

  • Validating incoming API request or response bodies against a schema contract
  • Checking configuration files and structured data before an application consumes them
  • Enforcing data quality in ETL and ingestion pipelines
  • Building higher-level validation frameworks and code generators on top of a spec-compliant core

Under The Hood

Architecture - Validator classes are not hand-written per draft but generated at import time by validators.create(), which binds a version-specific meta-schema, a type checker, a format checker, and a mapping of schema keywords (in _keywords.py and _legacy_keywords.py) to validation functions; each keyword function yields ValidationError objects, so validation is a lazy generator pipeline that iter_errors() drains and validate() consumes only far enough to raise the first error. $ref and $dynamicRef resolution is delegated to the external referencing library and jsonschema-specifications, keeping schema loading and the validation core cleanly separated.

Tech Stack - Pure Python targeting 3.10+, built with hatchling and hatch-vcs for versioning. Runtime dependencies are deliberately lean: attrs for the frozen validator classes, referencing and jsonschema-specifications for schema/registry handling, and rpds-py for persistent immutable data structures. Optional format and format-nongpl extras pull in focused validators (fqdn, idna, rfc3339-validator, uri_template, webcolors) only when semantic format checking is needed. Testing and benchmarking run through nox and pyperf.

Code Quality - The test suite is larger than the source (roughly 5,900 lines of tests against 4,600 of implementation) and is anchored by test_jsonschema_test_suite.py, which runs the official cross-language JSON Schema conformance suite. The codebase uses modern typing throughout, exposes runtime_checkable Protocol definitions in protocols.py, and handles backward compatibility gracefully via module-level getattr hooks that emit DeprecationWarnings rather than breaking imports.

API Design - The public surface is deliberately layered for progressive disclosure: validate(instance, schema) is a one-liner for the common case, while Draft202012Validator and its siblings expose is_valid(), iter_errors(), and check_schema() for callers who need all errors or a specific draft. Errors are first-class objects with json_path, absolute_path, and an ErrorTree view, making programmatic failure handling ergonomic. Extensive Read the Docs documentation and inline examples keep the learning curve gentle for a spec as intricate as JSON Schema.

Used by 27 apps in this directory

TypeScript
93%
MIT

OpenReel Video

Video Editors

5,442

A browser-based, GPU-accelerated video editor with multi-track timelines, color grading, and 4K export — no uploads, no installs, no watermarks.

View details
72
Repo Health
80
Technical
71
Dependency
Built with
TypeScript 93%
Updated 1 weeks ago
Go
71%
Apache 2.0

OSV.dev

Security

3,001

Google's open-source vulnerability database that maps CVEs to exact package versions across 50+ ecosystems with a public API and data dumps.

View details
87
Repo Health
82
Technical
66
Dependency
Built with
Go 71%
Python 19%
Updated 6 days ago
Python
49%
Other

Arize Phoenix

Analytics · Devops · Monitoring

11,976

Open-source AI observability platform for tracing, evaluating, and debugging LLM applications with built-in intelligence and MCP support.

View details
92
Repo Health
88
Technical
67
Dependency
Built with
Python 49%
TypeScript 43%
Updated 5 days ago
Python
99%
Apache 2.0

Rasa Open Source

AI Assistants · AI Development · Voice AI

21,353

Rasa Open Source is a Python machine learning framework for building contextual, multi-turn chatbots and voice assistants that understand natural language and maintain conversation state.

View details
62
Repo Health
78
Technical
63
Dependency
Built with
Python 99%
Updated 3 months ago
Python
45%
Other

Redash

Analytics · Data Engineering

28,849

Redash lets anyone connect to 35+ SQL and NoSQL data sources, write a query in the browser, and turn the result into a shared dashboard — no separate BI suite required.

View details
91
Repo Health
74
Technical
61
Dependency
Built with
Python 45%
JavaScript 29%
TypeScript 19%
Updated 1 weeks ago
Python
57%
Other

Sentry

Analytics · Developer Tools · Monitoring

45,632

Developer-first error tracking and performance monitoring platform with AI-powered root-cause analysis across 20+ languages and frameworks.

View details
95
Repo Health
80
Technical
66
Dependency
Built with
Python 57%
TypeScript 42%
Updated 5 days ago
Python
79%
AGPL 3.0

Skyvern

AI Agents · Automation

23,257

Skyvern (YC S2023) automates browser-based workflows by pairing LLMs with computer vision, letting agents click, fill, and extract data on sites they've never seen, without brittle XPath selectors that break on every layout change.

View details
89
Repo Health
82
Technical
70
Dependency
Built with
Python 79%
TypeScript 19%
Updated 5 days ago
Python
94%
Apache 2.0

SWIRL

Data Engineering · Databases · Search

3,046

Federated AI search and RAG across 100+ enterprise sources—no data extraction, no vector database required.

View details
61
Repo Health
83
Technical
65
Dependency
Built with
Python 94%
Updated 1 weeks ago
Python
92%
GPL 3.0

Weblate

Developer Tools

6,124

Continuous localization platform that commits translations directly into your version control system with full translator attribution.

View details
95
Repo Health
86
Technical
67
Dependency
Built with
Python 92%
Updated 5 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers