What does it do?
Bokeh generates interactive charts that run directly in a web browser, letting viewers pan, zoom, and hover over data without the chart’s creator needing to know any JavaScript or web design. It was designed specifically for large or streaming datasets, the kind that update in real time or contain far too many points to usefully show on a static image. It occupies a similar niche to Plotly, but with a different underlying design and a stronger focus on connecting Python data directly to browser-based visuals for live dashboards. If you’ve seen a Python-built dashboard update itself as new data streams in, there’s a good chance Bokeh, or something like it, made that possible.
See it in action
This code draws a simple line chart that opens in a web browser, where you can zoom in and move around it.
from bokeh.plotting import figure, show
p = figure(title="Simple Line Chart", x_axis_label="x", y_axis_label="y")
p.line([1, 2, 3, 4], [10, 20, 25, 30], line_width=2)
show(p)
Why would a non-developer care?
Live, updating visualizations matter whenever decisions depend on current data, monitoring server health, tracking sensor readings, watching sales numbers change through the day, rather than a snapshot from yesterday’s report. Bokeh made building that kind of live, browser-based visualization accessible to people who know Python but not web development.
Real-world examples
It’s commonly used in scientific computing and monitoring dashboards where data updates continuously and needs interactive exploration rather than a fixed image. It was originally developed by Continuum Analytics, the company that also created the widely used Anaconda Python distribution.
Who uses it
Data scientists and engineers building real-time or large-scale interactive visualizations and monitoring dashboards.
How it compares to alternatives
Bokeh competes most directly with Plotly for browser-based interactive charts; Plotly tends to have a gentler learning curve and tighter integration with the Dash app framework, while Bokeh is often favored for handling very large or streaming datasets efficiently.