Pick the wrong tool and you get one of two problems. Either a graph that grew to 400 nodes and nobody dares to open, or a $10,000 add-in for a task someone runs twice a year. This guide is how we choose on a scoping call.
The short answer
- Dynamo for visual scripts your team may want to edit, run now and then.
- pyRevit for a quick company toolbar of small tools.
- A C# add-in for tools many people use daily, that need a real window or speed, or that must handle Revit upgrades cleanly.
- Often the answer is a mix: prove the logic with a small script, then turn it into an add-in once people rely on it.
Side by side
| Compare | Dynamo | pyRevit | C# add-in |
|---|---|---|---|
| What it is | Visual graphs of connected nodes, with Python nodes for custom logic | Python or C# scripts that appear as buttons on a Revit tab | Compiled code on the Revit API, loaded when Revit starts |
| Best for | Visual scripts your team may want to edit | A quick firm toolbar of small tools | Tools many people use every day |
| Who can edit it | Staff who know Dynamo | Staff who know some Python | A C# developer |
| Speed on big models | OK | Good | Best |
| Custom interface | Basic | Basic to medium | Full |
| How it reaches users | Graph files run from Dynamo Player | pyRevit plus your extension, from Git | An installer per Revit version |
| Upgrade work | Test each year; Dynamo 4.0 changed the Python engine | Test each year, especially on .NET 10 versions | Rebuilt and tested per version; most predictable |
| License | Open source (Apache-2.0) | Open source (GPL-3.0) | Custom work assigned to you once paid in full |
| Where to start with us | Pilot $750–$1,500 | Pilot $750–$1,500 | From $4,000 |
When each one fits
Dynamo
Dynamo is open source under Apache-2.0 (Dynamo on GitHub) and works inside Revit. It suits logic you can draw: take a list, filter it, place or change elements. Packaged for Dynamo Player, a graph gets a simple window with a few inputs, so people who don't code can run it.
Watch for: big graphs become hard to follow, Python nodes depend on the Python engine (more on that below), and very large models can be slow.
pyRevit
pyRevit is an open-source environment for building Revit tools in Python or C#, licensed GPL-3.0 (pyRevit on GitHub). It's the fastest way to give a team a company tab with small tools: renumbering, view and sheet cleanup, parameter fills, naming checks. Your extension lives in a Git repository, so updates reach everyone.
Watch for: every machine needs pyRevit installed and kept current, your IT team has to be comfortable with that, and your legal team should be comfortable with the license.
C# add-in
A compiled add-in uses the full Revit API, can have a proper window with tables, filters and previews, and runs fastest on large workshared models. It ships as an installer per Revit version that IT can roll out like any other software.
Watch for: more time and cost up front, a C# developer to change it, and a separate build for each .NET runtime your Revit versions use.
Examples from data center work
Illustrative examples of how we'd choose, not client projects.
| Task | Our pick | Why |
|---|---|---|
| Place CDUs for one data hall from the engineer's list | Dynamo, run from Dynamo Player | Visual, run a few times per project, and a BIM coordinator can adjust the inputs |
Renumber racks to DH1-A-03 (hall, row, position) after each layout change, for one team | pyRevit button | Small, frequent and quick to change when the scheme changes |
Check every rack's A and B feeds, such as RPP-1A-01 and RPP-1B-01, against the one-line list every week | C# add-in | Many people use it, it needs a results window, and it must be fast on large models |
| Create sheets for every data hall from an Excel list | Dynamo pilot first, C# add-in if it becomes a daily tool | Prove the naming rules cheaply, then harden it |
Copy a prototype across a campus and rebuild IDs (B2-DH1-A-01), sheets and schedules per building | C# add-in, or a cloud batch job | Runs on many models; a batch job avoids opening each one by hand |
| Check every cloud model against the owner's standard each night | Design Automation for Revit | Runs in the cloud with no desktop open; usage is billed by Autodesk |
Placement and checking tools apply the counts, capacities, clearances and rules your engineer of record provides. Their outputs are drafting and data aids, not engineering calculations, code-compliance reviews or sealed documents.
A decision checklist
- How many people will run it? One or two: Dynamo or pyRevit. A whole department: a C# add-in.
- How often? Once per project: Dynamo. Every day: an add-in.
- Does it need a real window, with tables, filters or a preview before bulk edits? Lean toward C#. pyRevit can handle simple forms.
- Who maintains it after handover? Dynamo users in-house: Dynamo. Someone who knows some Python: pyRevit. A C# developer or a retainer: an add-in.
- How big are the models? Large workshared data center models favor compiled code.
- How many Revit versions does your office run? Several at once: an add-in with an installer per version is the most predictable.
- Will IT allow pyRevit on every machine, and is legal comfortable with GPL-3.0? If not: Dynamo or C#.
- Must it run across many models without a desktop? Design Automation for Revit.
- Is the logic still uncertain? Start with a Dynamo or pyRevit pilot and promote it once it's proven.
Upgrade considerations
Dynamo's new Python engine
Dynamo 4.0 made PythonNet3 the default Python engine, replacing CPython3 (Dynamo release notes). Graphs written for the IronPython2 or CPython3 engines may need changes: Excel and COM interop, WPF, collections and enums behave differently (DynamoBIM). Before you upgrade, list every graph with a Python node and test each one on the new engine.
Revit .NET changes
Revit 2025 moved add-ins to .NET 8. Autodesk says Revit 2025.5, 2026.5 and later use .NET 10, and Revit 2027 runs on .NET 10 with all-user add-ins installed to Program Files. That affects C# add-ins most directly, but compiled Dynamo packages and pyRevit run on the same runtime. Details and a checklist: .NET 8 support ends November 2026.
pyRevit on .NET 10
The release notes for pyRevit 7.0.0, published October 6, 2026, don't state .NET 10 support (pyRevit releases). Test the current pyRevit release on your exact Revit version before you roll a toolbar out on 2025.5, 2026.5 or 2027. If it isn't ready, a C# add-in is the safer choice for those versions.
Cloud batch runs
Dynamo Switchboard, which runs graphs in the cloud, is an early-access beta that works only in Dynamo 3.6 with Revit 2026 (DynamoBIM). It's worth watching, but not for production yet. For batch work, we lead with Design Automation for Revit, part of the Autodesk Platform Services (APS) Automation API. Since December 8, 2025, that usage is metered, with a free monthly tier and paid use by Autodesk Flex tokens billed to your account (APS). We estimate usage before we build.
Licenses and software
- pyRevit (GPL-3.0): the license mainly affects how pyRevit itself is redistributed. Keep your firm's extension in its own repository, and have your legal team review it. We list every open-source part in your handover. This isn't legal advice.
- Custom work: add-ins, scripts and content made only for you are assigned to you in writing once paid in full. Our reusable components come with a permanent, firm-wide, royalty-free license.
- Revit edition: all three need full Autodesk Revit or the AEC Collection. Revit LT doesn't run add-ins or Dynamo.
Sources
- Dynamo release notes (PythonNet3 default from Dynamo 4.0)
- DynamoBIM: a practical guide to migrating Dynamo graphs to PythonNet3 (December 2025, updated May 2026)
- DynamoBIM: introducing Dynamo Switchboard (beta) (May 2026)
- Dynamo on GitHub and pyRevit on GitHub (licenses)
- pyRevit releases (7.0.0, October 6, 2026)
- Autodesk Platform Services: metered API usage and Flex tokens, from December 8, 2025