Tech and Tools
The tools these teams reach for, current as of 2026.
DUG isn’t a guide for people who want to become data journalists. There are plenty of those, and some are excellent. It’s for the people building the team. Even so, you should know what the work involves and what to look for when you hire. The current toolkit:
Most of the software below is free. Most of what isn’t can be had free with a professional-society membership. (You can get Tableau Desktop with an IRE membership, for example.) In the third column, we point to a good tutorial. There are always others.
The biggest change since this guide first appeared is a shift toward reproducibility. The strongest teams now treat a data story like software, wiring together SQL, Markdown, and version control so an analysis can be rerun, audited, and rebuilt on a schedule. Treat the specific products as provisional: the toolkit turns over fast, so hire and train for transferable foundations (a scripting language, SQL, version control) over any one brand.
Data wrangling & analysis
| Tool | What it is | Learn it |
|---|---|---|
| Python / Jupyter | General-purpose programming language and interactive browser-based notebooks. The lingua franca of newsroom data work. | First Python Notebook |
| R / RStudio | Statistical programming language and desktop IDE (now maintained by Posit). Beloved for analysis and charts. | R for Journalists |
| Google Sheets | It's Google Sheets. Still where a lot of good reporting starts. | GIJN |
| polars new | Fast, multithreaded DataFrame library. Handles files that make pandas run out of memory. | Polars guide |
| Beautiful Soup | Python library for parsing and scraping static HTML pages. | palewire scraping |
| Playwright new | Browser automation for scraping JavaScript-heavy sites. The modern default where Selenium used to go. | Playwright docs |
| uv new | Fast Python package and environment manager. Increasingly the default in newsroom project templates. | uv docs |
| Google Colab | Hosted notebooks with no local setup. The free tier is throttled and metered now, but still handy for teaching. | Welcome to Colab |
Reproducible reporting: SQL + Markdown + git
| Tool | What it is | Learn it |
|---|---|---|
| DuckDB new | In-process analytical SQL engine. Query millions of rows of CSV or Parquet locally, or even in the browser. | DuckDB docs |
| Quarto new | Reproducible documents, dashboards, and sites in Python, R, or JavaScript. Posit's successor to R Markdown. | Quarto guide |
| Observable Framework new | Open-source static-site generator for data apps and dashboards: Markdown plus JavaScript, with build-time data loaders. | Framework docs |
| Evidence new | "BI-as-code": write SQL inside Markdown and get interactive charts, deployed straight from a git repo. | Evidence docs |
| git / GitHub | Version control. We've heard it again and again: it is the saving grace of data projects. Learn it early. | Learn Git Branching |
| GitHub Actions new | The glue layer for scheduled scrapers and automated builds. Rebuild a page, or re-run a scraper, on a cron. | Actions docs |
Data visualization
| Tool | What it is | Learn it |
|---|---|---|
| Datawrapper | The workhorse for no-code, embeddable charts, maps, and tables. Sensible defaults out of the box. | Datawrapper Academy |
| Flourish | No-code charts plus scrollytelling and animated templates. | Flourish help |
| RAWGraphs | Open-source tool for less-common chart types. Now on version 2. | RAWGraphs learning |
| ggplot2 | R's grammar-of-graphics plotting library. Publication-quality charts from code. | ggplot2 book |
| matplotlib | The foundational Python plotting library. | Real Python |
| D3.js / Observable Plot new | D3 for fully bespoke interactive graphics; Observable Plot for fast exploratory charts from the same team. | Observable Plot |
| QGIS | Free, open-source desktop GIS for mapping and spatial analysis. | QGIS Tutorials |
| Tableau | Drag-and-drop visual analysis. Tableau Desktop is free with an IRE membership. | Coursera |
| Adobe Illustrator | Professional finishing and annotation for print and static graphics. | Adobe tutorials |
Web & infrastructure
| Tool | What it is | Learn it |
|---|---|---|
| HTML / CSS | The web's markup and styling languages. Non-negotiable for anyone publishing interactives. | MDN Learn |
| JavaScript | The language of the browser, and of most modern news graphics. | javascript.info |
| Svelte / SvelteKit new | Lightweight, compiled framework that has become a newsroom favorite for graphics and scrollytelling. | Svelte tutorial |
| React | Widely used JavaScript library for building interfaces and larger news apps. | React docs |
| Django | Python web framework, still common for database-backed news applications. | Django Girls |
| Node.js / npm | JavaScript runtime and package ecosystem that underpins most build tooling. | Node.js docs |
| Amazon Web Services | Cloud hosting and storage for bigger builds. (Static hosts like Netlify and Cloudflare Pages cover most needs.) | Coursera |
Don’t reinvent the newsroom
Software won’t get you all the way there. You also need organizational processes and pipelines. The specifics vary with your team’s preferences, but the good news is that lots of smart people have formalized these frameworks and given them away. Rather than build a page generator from scratch, start from one a newsroom already maintains:
- The Texas Tribune’s
data-visuals-create, the healthiest of the newsroom project templates and a good default. - The Associated Press’s cookiecutter Python templates, including a modern
uv-based starter, the successor to the older DataKit CLI. - The Seattle Times’
newsapp-template, still maintained if a little older in approach.
(If you find the LA Times’ django-bigbuild referenced online, it was archived in 2020. The field moves; check that a template is still maintained before you build on it.)
Nearly everyone on a data team should know git. We’ve heard it again and again, and found it ourselves: version control is what keeps data projects from falling apart.