Dash: Open-Source Python Framework for Data Apps | Plotly

APPSDash: the open-source Python framework for data applications

The most popular Python framework for analytical web apps

24K+

GitHub stars

10M+

PyPI downloads per month

8+

years of active development

How it works30 lines of Python. A fully interactive web app.

1. Define your layoutUse Python to declare your UI — dropdowns, graphs, sliders, tables, and 100+ other components. No HTML templates.

2. Write callbacksDecorate plain Python functions with

@app.callbackWhen an input changes, Dash calls your function and updates the UI automatically.

3. Run itpython app.py and open your browser. That's it. Your app is live at localhost and ready to deploy.

app.py

from dash import Dash, dcc, html, Input, Output

import plotly.express as px

import pandas as pd

df = pd.read_csv(

"https://raw.githubusercontent.com/""plotly/datasets/master/gapminder_unfiltered.csv"

)

app = Dash()

Works with AI tooEasy for you. Easy for AI agents.

Describe what you wantTell your AI coding agent — Claude, Cursor, Copilot, or any other — to build you a Dash app. "Show me a dashboard that lets me filter sales by region and date." That's the whole prompt.

Get a working app in minutesThe agent generates a complete Dash application — layout, callbacks, charts, and a runnable server. Not a skeleton. Not a TODO list. A working app you can open in a browser.

Iterate or ship — your callUse it as-is for a quick internal tool, or keep building. Add authentication, new pages, custom styling. Because Dash is a real framework, your AI-generated prototype doesn't hit a wall — it grows into your production app.

Pure Python reactiveWire UI to Python. No HTML, CSS, or JavaScript - just functions and decorators.

@callbackThe decorator that turns a Python function into a piece of reactive UI. Inputs, outputs, and state— all declared in Python.

Pattern-matching callbacksGenerate dynamic layouts that wire up automatically. Add or remove components at runtime without rewriting your callbacks.

Clientside & backgroundClientside callbacks run instantly in the browser. Background callbacks offload long jobs without freezing the UI.

Components for serious analyticsSpreadsheet-class grids. Production-ready charts.
Complete component libraries — accessible from Python, React under the hood.

Dash AG Grid

Filtering, grouping, pivoting, and editing at enterprise scale. The same grid powering data-heavy apps inside global banks.

View the AG Grid docs →

Dash Mantine + Bootstrap

Complete UI kits - buttons, modals, tabs, layouts - wired up from Python with no front-end work required.

View the component libraries →

dcc.Graph

Embed any Plotly figure into a Dash app with crossfiltering, selection, and click events wired to Python callbacks.

View the dcc.Graph docs →

Production readyFrom prototype to production data application.
Dash apps run in regulated industries, on global infrastructure, behind firewalls.

Multi-page appsDash Pages handles file-based routing, layout composition, and navigation state — modern web framework patterns, written in Python.

Streaming & long-running tasksWebSocket support, set_props for incremental updates, and background callbacks keep dashboards responsive under load.

Deploys anywhereEasy, fast, one-click deployment to Plotly Cloud and Dash Enterprise. Can be deployed on other platforms.

Tech Specs

License

MIT (open source)Form factor

Python frameworkInstall

pip install dashLanguages

PythonBuild on

Flask (server) + React (client) + plotly.jsComponents

dcc, html, Bio, Cytoscape, AG Grid, DataTable, Mantine, plus community librariesState model

Server-side reactive callbacks; pattern-matching, clientside, background, longStreaming

WebSocket and SSE via dash-extensions; long-callbacks for jobsAuth

None built-in, bring your own (Flask-Login, Auth0, OIDC) or use authentication libraries included with Plotly Cloud and Dash Enterprise.Server

Any WSGI server: Gunicorn, uWSGI, mod_wsgi; ASGI via async wrappersHosts on

Plotly Cloud, Dash Enterprise, Kubernetes, Heroku, AWS, Azure, GCPDev loop

Hot reload, debug toolbar, callback graph inspectorTesting

dash[testing] with pytest + Selenium/Playwright driversVersioning

SemVer; 12-month deprecation policy on public APIsPython

3.9+Source

plotly/dashon GitHub, 43k+ starsLicense

MIT (open source)Form factor

Python frameworkInstall

pip install dashLanguages

PythonBuild on

Flask (server) + React (client) + plotly.jsComponents

dcc, html, Bio, Cytoscape, AG Grid, DataTable, Mantine, plus community librariesState model

Server-side reactive callbacks; pattern-matching, clientside, background, longStreaming

WebSocket and SSE via dash-extensions; long-callbacks for jobsAuth

None built-in, bring your own (Flask-Login, Auth0, OIDC) or use authentication libraries included with Plotly Cloud and Dash Enterprise.Server

Any WSGI server: Gunicorn, uWSGI, mod_wsgi; ASGI via async wrappersHosts on

Plotly Cloud, Dash Enterprise, Kubernetes, Heroku, AWS, Azure, GCPDev loop

Hot reload, debug toolbar, callback graph inspectorTesting

dash[testing] with pytest + Selenium/Playwright driversVersioning

SemVer; 12-month deprecation policy on public APIsPython

3.9+Source

plotly/dashon GitHub, 43k+ starsLicense

MIT (open source)Form factor

Python frameworkInstall

pip install dashLanguages

PythonBuild on

Flask (server) + React (client) + plotly.jsComponents

dcc, html, Bio, Cytoscape, AG Grid, DataTable, Mantine, plus community librariesState model

Server-side reactive callbacks; pattern-matching, clientside, background, longStreaming

WebSocket and SSE via dash-extensions; long-callbacks for jobsAuth

None built-in, bring your own (Flask-Login, Auth0, OIDC) or use authentication libraries included with Plotly Cloud and Dash Enterprise.Server

Any WSGI server: Gunicorn, uWSGI, mod_wsgi; ASGI via async wrappersHosts on

Plotly Cloud, Dash Enterprise, Kubernetes, Heroku, AWS, Azure, GCPDev loop

Hot reload, debug toolbar, callback graph inspectorTesting

dash[testing] with pytest + Selenium/Playwright driversVersioning

SemVer; 12-month deprecation policy on public APIsPython

3.9+Source

plotly/dashon GitHub, 43k+ starsBuild your first Dash app in 20 minutes.