Embed Sinusoidal History

The /embed routes are iframe-safe and URL-driven. Set the view, range, cycle filter, and any calibration overrides via query string. All embeds link back to the main site and to methods.

Query params

Available cycle ids: khaldun · kondratiev · huntington · schlesinger_jr · perez · turchin · dalio · strauss_howe · modelski · turchin_fathers_sons

Copy-paste snippets

Does each cycle hold up? (most embeddable)

Just the verdict panel: each cycle's "Does it hold up?" answer. Small, scannable, shareable. Ideal for inline Substack embeds.

<iframe
  src="https://sinusoidalhistory.com/embed?view=state-only"
  width="100%"
  height="700"
  style="border:1px solid #e5e7eb;border-radius:8px"
  loading="lazy"
></iframe>

preview: /embed?view=state-only

Full facets, modern window

The facet stack zoomed to 1900+. Ten charts are taller than any frame, so this one scrolls inside its frame.

<iframe
  src="https://sinusoidalhistory.com/embed?view=facets&range=modern"
  width="100%"
  height="900"
  style="border:1px solid #e5e7eb;border-radius:8px"
  loading="lazy"
></iframe>

preview: /embed?view=facets&range=modern

Huntington only, with calibration

Filter to a single cycle and override its peak year — useful for arguing a specific claim in prose. The embed says, above the curve, that the peak is yours and what the site's is.

<iframe
  src="https://sinusoidalhistory.com/embed?view=facets&cycles=huntington&peak.huntington=1972"
  width="100%"
  height="540"
  style="border:1px solid #e5e7eb;border-radius:8px"
  loading="lazy"
></iframe>

preview: /embed?view=facets&cycles=huntington&peak.huntington=1972

Classic overlay

Phase 1 single-SVG view with every cycle and data series. For a column wider than 640px: in a phone-width column the legend stacks above the chart and the frame scrolls.

<iframe
  src="https://sinusoidalhistory.com/embed?view=overlay&range=modern"
  width="100%"
  height="1070"
  style="border:1px solid #e5e7eb;border-radius:8px"
  loading="lazy"
></iframe>

preview: /embed?view=overlay&range=modern

Cross-origin

The app sets Content-Security-Policy: frame-ancestors * and omits X-Frame-Options on /embed/* routes. You can embed from any origin.