See it as a diagram
Everything below, as a diagram you can edit. Describe yours and see it in seconds.
No account needed · Editable canvas, not a picture
Why terraform graph fails as documentation
The command was built for debugging the dependency resolver, not for people. Three properties make it unusable as documentation. It shows the plan graph, so every provider, every data source, and every meta-resource appears as a node. It has no notion of importance, so a random_password sits next to the EKS cluster at the same size. And it outputs DOT, which means a second tool, a layout fight, and a static image nobody regenerates.
The deeper problem is that the plan graph is the wrong abstraction. Readers do not think in dependency edges; they think in modules, environments, and the handful of resources that matter. A diagram that shows 100 percent of edges communicates none of them.
What a real alternative has to do
Parse the source, not the plan. Reading .tf files directly means no init, no provider downloads, no backend access, and it works in CI or from a read-only connection. The structure people care about lives in the source anyway: module blocks, resource blocks, variable wiring.
Curate deterministically. The subject of a Terraform diagram is the platform: the workspace, the network, the databases, the compute. The wiring underneath it, role assignments, grants, random suffixes, policy attachments, belongs in a count, not in boxes. A useful tool decides this before drawing, the same way every time.
Keep module structure. Terraform authors already organized the repo into modules with meaningful names. Drawing modules as container zones and resources inside them reuses the mental model the team already has.
How Datadef draws a Terraform repository
Connect the repo from GitHub, GitLab, or Azure DevOps with a read-only token (public repositories need none) and pick a branch or tag. Datadef parses every .tf and .tfvars file: stacks, modules, resources, data sources, count and for_each, cross-module references resolved through outputs. No state file is read and nothing is executed.
The result is curated before drawing: major resources stay individual nodes with their provider icons, repeated minor types roll up into one node carrying the count and the member names, and identity wiring becomes a note. A 123-resource platform reads at around 36 nodes in module zones. The diagram regenerates on a daily sync and on demand, so it stays the repository rather than a screenshot of it.
The sync also writes an architecture doc with a generated module reference table, and the diagram embeds in your README or wiki as a live image that updates with the canvas.
No init, no state
FAQ
Why is terraform graph output so hard to read?
Does Datadef need terraform init or a state file?
How does it decide what to show and what to hide?
What happens when the repository changes?
Does it work with OpenTofu repositories?