AykutSarac/jsoncrack.com · warning

Your diagram is too large

Error message

Your diagram is too large

What it means

Rendered by the NotSupported overlay when the graph's node count exceeds the rendering limit. This is a deliberate product gate, not an exception: jsoncrack-react invokes renderNodeLimitExceeded, and this overlay replaces the graph, directing users to ToDiagram for large datasets. The format from useFile is appended to the upgrade link so the target app can preselect the right importer.

Source

Thrown at apps/www/src/features/editor/views/GraphView/NotSupported.tsx:113

  "Unlimited diagram size",
  "Compare data side by side",
  "Edit data directly on graph",
  "AI-powered data filter",
];

export const NotSupported = () => {
  const darkmodeEnabled = useConfig(state => state.darkmodeEnabled);
  const format = useFile(state => state.format);

  return (
    <Overlay backgroundOpacity={0.6} color={darkmodeEnabled ? "#111" : "#e2f0f3"} blur="3" center>
      <CardWrapper data-dark={darkmodeEnabled}>
        <Stack align="center" gap="md">
          <Image src="https://todiagram.com/logo.svg" alt="ToDiagram" w={48} h={48} />
          <Badge variant="light" color="teal" size="sm" radius="sm">
            Upgrade Required
          </Badge>
          <Text fz="24" fw={700} c={darkmodeEnabled ? "white" : "dark"} ta="center" lh={1.2}>
            Your diagram is too large
          </Text>
          <Text ta="center" size="sm" c="dimmed" maw="360" lh={1.5}>
            JSON Crack can&apos;t render this file.{" "}
            <Anchor
              inherit
              c="teal"
              fw={500}
              href="https://todiagram.com/editor?utm_source=jsoncrack&utm_medium=data_limit"
              target="_blank"
              rel="noopener"
            >
              ToDiagram
            </Anchor>{" "}
            handles large datasets with ease.
          </Text>
          <List
            spacing="xs"

View on GitHub (pinned to 3c9af69e23)

Solutions

  1. Reduce input size by filtering or pruning keys before loading.
  2. If you control the data, split it into smaller documents.
  3. For the product team, raise the limit or gate it behind a paid tier with clear thresholds.
  4. Offer a 'download as file' escape so the user does not lose data when hitting the limit.
Defensive patterns

Strategy: fallback

Validate before calling

// Estimate node count before rendering to warn proactively
function estimateNodeCount(value: unknown): number {
  if (value === null || typeof value !== "object") return 1;
  if (Array.isArray(value)) return value.reduce((n, v) => n + estimateNodeCount(v), value.length);
  return Object.values(value).reduce((n, v) => n + estimateNodeCount(v), Object.keys(value).length);
}

Prevention

When it happens

Trigger: Loading a JSON document whose node count exceeds the configured render ceiling; pasting a multi-megabyte or very wide/deep JSON structure; arrays with thousands of elements.

Common situations: Power users loading large API dumps; deeply nested config trees; arrays of arrays producing combinatorial node counts.

Related errors


AI-assisted analysis of AykutSarac/jsoncrack.com@3c9af69e23 (2026-08-12). Data as JSON: /api/errors/7c2d62176a80a737. Report an issue: GitHub.