
GraphWeather vs. Weewx vs. CumulusMX: Choosing Your Publishing Software
An honest comparison of GraphWeather, Weewx, and CumulusMX β covering platform support, templating, extensibility, and real-world publishing workflows.
Picking weather-station software feels a lot like picking a car. The brochure tells you the horsepower and the paint colours, but it never mentions that the boot is too small for your kit bag or that the infotainment system crashes every third Tuesday. I have lived with all three of the packages discussed here β GraphWeather, Weewx, and CumulusMX β across multiple stations and multiple years. What follows is not a feature-matrix copy-paste; it is an honest, opinionated comparison rooted in the things that actually matter once the novelty of installation day wears off.
If you are just getting started with GraphWeather, that landing page covers features and downloads. This article assumes you want to weigh your options before committing.
Quick-Answer Summary
| Criteria | GraphWeather | Weewx | CumulusMX |
|---|---|---|---|
| Primary platform | Windows (C++ desktop app + PHP web components) | Linux / macOS (Python) | Windows / Linux via Mono (.NET) |
| Templating | Custom variable system, powerful conditionals | Cheetah-based templates, very flexible | Built-in web dashboard + limited templates |
| FTP publishing | Built-in scheduler with retry logic | Built-in, highly configurable | Built-in, straightforward |
| Extension ecosystem | Plugin architecture, growing library | Huge community extension repository | Smaller set of add-ons |
| Learning curve | Moderate β GUI-driven, documentation solid | Steep β config file is everything | Gentle β dashboard-focused setup wizard |
| Hardware support | Davis, Fine Offset, LaCrosse, Ecowitt, others | Broadest support of any option | Davis, Fine Offset, Ecowitt, some others |
If you need a one-sentence answer: GraphWeather if you run Windows and want fine-grained template control; Weewx if you live in Linux and value the extension library; CumulusMX if you want the fastest path to a presentable dashboard with minimal configuration.
Now let us unpack each dimension properly.
Platform Support
GraphWeather
GraphWeather is a native Windows application written in C++. The desktop component handles station communication, data logging, and scheduling. A companion set of PHP scripts generates the web-facing pages. This split means the heavy lifting (serial/USB polling, real-time display) stays on the Windows box, while the published output is standard HTML/PHP that runs on any web host.
Running GraphWeather on Linux is possible β I cover that in detail in Running GraphWeather on Linux: Wine, Mono or Docker β but the native experience is Windows.
Weewx
Weewx is Python through and through. It installs cleanly on Debian, Ubuntu, Raspberry Pi OS, and macOS. Windows support exists via WSL or Cygwin but is not a first-class citizen. If your station PC is a headless Raspberry Pi under the eaves, Weewx feels right at home.
CumulusMX
CumulusMX is a .NET application that runs natively on Windows and on Linux/macOS via Mono. The Mono experience has improved dramatically over the years, but you will still encounter the occasional rendering glitch in the admin interface on non-Windows systems. The setup wizard is the friendliest of the three β answer a dozen questions and you have a working station.
Verdict: Your operating system is the first filter. Do not fight your platform. If you already maintain a Windows box for the station, GraphWeather and CumulusMX are natural choices. If the station PC is Linux, Weewx wins on native integration.
Templating and Web Output
This is where the three diverge most sharply, and it is the dimension that matters most for anyone who cares about how their published pages look.
GraphWeather Templates
GraphWeather uses its own variable system β placeholders like <%temperature%>, <%humidity%>, and <%pressure%> that get replaced at publish time. The system supports conditionals, loops, and format specifiers, so you can build anything from a minimal single-page site to a multi-page portal with daily/weekly/monthly views. The WeatherLink and templates guide explains the variable syntax in depth; most of it carries over directly to GraphWeather's template engine.
The learning curve sits in the middle: easier than Weewx's Cheetah templates (no Python knowledge required), harder than CumulusMX's point-and-click dashboard.
Weewx Templates
Weewx templates use the Cheetah templating language, which is essentially Python embedded in HTML. This gives you extraordinary power β arbitrary calculations, conditional blocks, iteration over historical records β but it also means debugging a template can feel like debugging a Python program, because that is exactly what you are doing.
The payoff is flexibility. The Weewx community has produced skins (template packages) ranging from minimalist single-page designs to elaborate multi-tab responsive sites. Installing a skin is a one-command affair; customising one requires Cheetah fluency.
CumulusMX Templates
CumulusMX ships with a built-in web dashboard that works out of the box. It looks modern, it is responsive, and it updates in near-real-time via AJAX. Customisation, however, is limited. You can tweak CSS, toggle panels on and off, and adjust units, but if you want a fundamentally different layout you are fighting the framework rather than extending it.
For operators who want a good-looking site with zero template work, CumulusMX is unbeatable. For operators who want to control every pixel, it is the most constraining option.
Verdict: If template control is important to you β and for most readers of this site it is β GraphWeather and Weewx are the serious contenders. GraphWeather's system is more approachable; Weewx's is more powerful. CumulusMX is the right choice when you explicitly do not want to think about templates.
FTP Publishing Workflows
All three support FTP and SFTP uploads on a schedule. The differences are in the details.
GraphWeather lets you define multiple upload targets with independent schedules and file lists. You can push a quick-update page every 60 seconds and a full historical report every 15 minutes β to different servers if you like. Retry logic is built in, and failed uploads are queued for the next cycle. The FTP publishing guide covers the setup end to end.
Weewx treats FTP as just another report target. You configure it in weewx.conf, specifying the skin, the destination, and the protocol. It is powerful but entirely text-file-driven; there is no GUI. One nice feature: Weewx can rsync instead of FTP, which is faster and more reliable if your host supports SSH.
CumulusMX offers a straightforward FTP configuration in its admin panel. It uploads the built-in dashboard files and any extra files you place in the upload directory. Less granular than GraphWeather's multi-target approach, but perfectly adequate for a single-site setup.
Verdict: GraphWeather's multi-target, independent-schedule FTP is the most flexible. Weewx's rsync support is a technical advantage for SSH-capable hosts. CumulusMX keeps it simple.
Extension Ecosystems
Weewx leads here by a wide margin. The community extension repository lists hundreds of drivers, skins, uploaders, and calculators. Need to upload to Weather Underground, CWOP, APRS, PWSWeather, and a custom InfluxDB endpoint? There is an extension β or five β for each.
GraphWeather has a plugin architecture that supports sensor editor extensions and data export modules. The library is smaller than Weewx's but growing, and the plugin API is well-documented. If you have hit a wall trying to visualise your data, the Grafana dashboard guide shows how to pipe GraphWeather exports into a full-featured dashboarding tool β a route that sidesteps the need for a built-in extension in many cases.
CumulusMX has the smallest extension ecosystem. The trade-off is that the built-in feature set covers more ground out of the box β MQTT support, for example, is native rather than an add-on.
Verdict: If you expect to customise heavily, Weewx's ecosystem is hard to beat. GraphWeather's plugin system is a strong second. CumulusMX bets on built-in features over community extensions.
Hardware Compatibility
All three support the major consumer brands: Davis Vantage (Pro2, Vue, Envoy), Fine Offset / Ambient Weather clones, Ecowitt, and LaCrosse. Weewx has the broadest hardware support because its driver model is open and community-contributed β if someone owns the station, someone has probably written a Weewx driver for it.
GraphWeather covers the most popular hardware families comprehensively. CumulusMX has solid Davis and Fine Offset support; other brands are patchier.
Important: Check hardware compatibility before choosing software. It sounds obvious, but I have watched people choose Weewx because they liked the skins, only to discover that their specific station variant needed a driver patch that had not been merged yet. Confirm your exact model against the software's supported-hardware list.
Community and Support
Weewx has the largest and most active community. The mailing list and GitHub discussions are responsive, and the core developers participate regularly.
GraphWeather has a dedicated user base with an active forum and detailed documentation. The developer is accessible and responsive to bug reports β a luxury that larger projects sometimes lose as they scale.
CumulusMX has an active forum and a helpful community, though it skews toward less technical users (which is perfectly fine β it reflects the software's design philosophy).
Decision Matrix
Answer these five questions to narrow your choice:
- What OS does your station PC run? Windows β GraphWeather or CumulusMX. Linux β Weewx.
- How much do you want to customise your web pages? Full control β GraphWeather or Weewx. Minimal effort β CumulusMX.
- Is your hardware in the supported list? If only one tool supports it, decision made.
- Do you need advanced extensions (MQTT, InfluxDB, APRS)? Weewx has the deepest library. GraphWeather covers the essentials via plugins and export pipelines.
- How comfortable are you with config files and command-line tools? Very β Weewx. Somewhat β GraphWeather. Prefer a GUI β CumulusMX.
If you answer "GraphWeather" to three or more of those, you are in the right place. Head to GraphWeather to get started.
Common Mistakes
- Choosing based on OS before checking hardware compatibility. Your station hardware is a harder constraint than your operating system. A supported OS with an unsupported station is a dead end.
- Underestimating template migration effort. Switching from one tool to another means rewriting every template. Weewx's Cheetah syntax, GraphWeather's variable system, and CumulusMX's dashboard are not interchangeable. Budget a full weekend for the conversion, and run both systems in parallel during the transition.
- Ignoring the publishing workflow. A tool might have beautiful templates but clunky FTP support β or vice versa. Evaluate the entire pipeline from sensor read to published page, not just the parts that demo well.
- Assuming community size equals quality. Weewx has the largest community, but that does not automatically make it the best fit. A smaller, focused community (like GraphWeather's) can be more helpful for your specific use case because members share your context.
- Not testing with your actual data. Install all three. Import a week of data. Build a test page. The hands-on experience will tell you more than any comparison article β including this one.
Related Reading
- GraphWeather overview β features, download, and getting-started guide.
- Publishing your weather pages β the complete pipeline from template to public URL.
- FTP publishing guide β protocol setup, scheduling, and troubleshooting.
- WeatherLink and templates β variable reference and template design patterns.
- Build a Grafana Weather Dashboard β extend any of these tools with a powerful visualisation layer.
FAQ
Can I migrate my data from Weewx to GraphWeather?
Yes. Weewx stores data in a SQLite database. Export it to CSV (wee_export or a direct SQL query), then import into GraphWeather's data manager. The column names will differ, so prepare a mapping file. A detailed migration workflow is something we cover in the context of WeatherLink and Meteobridge migrations, and the principles are the same.
Is CumulusMX still actively maintained? Yes, as of early 2026. The developer pushes regular updates, and the forum is active. The pace is slower than Weewx's, but the project is healthy.
Can I run two of these tools simultaneously?
Absolutely β and I recommend it during any migration. Most station hardware allows multiple readers (Davis Vantage consoles, for example, support serial sharing via vproweather or a data logger). Run both tools for at least two weeks to verify data parity before decommissioning the old one.
Which is best for a school or community weather station? CumulusMX, without hesitation. The setup wizard and built-in dashboard mean a non-technical volunteer can keep it running. If a technically inclined teacher or parent is involved, GraphWeather is a strong second choice because the template system is educational in its own right.
Does any of these support direct upload to Weather Underground or CWOP? All three do, though the mechanism varies. Weewx has dedicated extensions for dozens of networks. GraphWeather and CumulusMX handle the major networks (WU, CWOP, PWSWeather) through built-in upload modules. For niche networks, Weewx's extension library is the most likely to have coverage.