HTTP/2 308
date: Fri, 10 Oct 2025 23:40:18 GMT
content-type: text/plain; charset=utf-8
content-length: 5
content-security-policy: default-src 'self' https://api.observablehq.com https://events.observablehq.com https://static.observablehq.com https://observablehq.com https://*.static.observableusercontent.com; connect-src 'self' https://api.observablehq.com https://events.observablehq.com https://static.observablehq.com wss://ws.observablehq.com https://connector.observableusercontent.com https://js.stripe.com https://*.ingest.sentry.io https://*.google-analytics.com https://analytics.google.com https://*.analytics.google.com https://stats.g.doubleclick.net/j/collect https://www.googleapis.com https://*.googletagmanager.com https://graph.microsoft.com https://*.clarity.ms https://api.openai.com https://*.contentful.com https://cdp.customer.io https://*.ads.linkedin.com https://cdn.linkedin.oribi.io https://www.redditstatic.com https://pixel-config.reddit.com https://observablehq.observablehq.cloud https://*.gist.build https://*.vector.co https://*.ip-api.com https://d-code.liadm.com https://*.usbrowserspeed.com; font-src https://observablehq.com https://fonts.gstatic.com; frame-ancestors 'none'; frame-src https://observablehq.com https://observablehq.com/embed/ https://*.static.observableusercontent.com https://js.stripe.com https://www.youtube.com/embed/ https://docs.google.com https://challenges.cloudflare.com data: blob: https://*.gist.build; img-src https://api.observablehq.com https://*.static.observableusercontent.com https://static.observablehq.com https://observablehq.com https://*.githubusercontent.com https://*.stripe.com https://avatars.observableusercontent.com https://avatars-next.observableusercontent.com https://*.google-analytics.com https://www.google.com/ads/ga-audiences https://*.googletagmanager.com https://*.ads.linkedin.com https://*.clarity.ms https://*.bing.com static.observableusercontent.com https://images.ctfassets.net https://alb.reddit.com https://*.amazonaws.com data: blob:; manifest-src 'none'; media-src https://observablehq.com https://static.observablehq.com https://videos.ctfassets.net; object-src 'none'; script-src 'self' 'sha256-O8YyK1zMiyl29Qajpzk/a7P9suyXs2Vt4lnEuULjXEY=' 'sha256-ERfeEwC9NC9b9t4L2Qp3/yGGgUmFfGH8pIR8kI04FUM=' 'sha256-UJ7XRVoD2oZRK3RRMLdPrdHA+LguX3UEXAZ6hVbuYIk=' 'sha256-E8fjaxUWJTzw+p0U0obCJnciUlgSrzubZcmiKi7SR6c=' 'sha256-g7o+8EOFBiI0+GgtiBaQ0yy0tWJ7XM5PfA6GFm61bw8=' 'wasm-unsafe-eval' https://static.observablehq.com https://www.googleapis.com https://apis.google.com https://*.googletagmanager.com https://js.stripe.com https://*.clarity.ms https://snap.licdn.com https://www.redditstatic.com https://challenges.cloudflare.com https://observablehq.observablehq.cloud https://*.gist.build https://*.vector.co https://*.ip-api.com https://d-code.liadm.com https://*.usbrowserspeed.com; style-src https://static.observablehq.com https://observablehq.com https://fonts.googleapis.com https://*.gist.build 'unsafe-inline'; worker-src https://observablehq.com
location: /plot
nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
refresh: 0;url=/plot
report-to: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=K1LBQNm7QArEk%2Fh0nzyKYxzCDHb%2BFT4mgu8SBoHlO7w%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1760139618"}],"max_age":3600}
reporting-endpoints: heroku-nel="https://nel.heroku.com/reports?s=K1LBQNm7QArEk%2Fh0nzyKYxzCDHb%2BFT4mgu8SBoHlO7w%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1760139618"
server: cloudflare
strict-transport-security: max-age=86400; includeSubDomains
via: 2.0 heroku-router
vary: accept-encoding
cf-cache-status: BYPASS
cf-ray: 98c9f6430cb27679-BLR
HTTP/2 301
date: Fri, 10 Oct 2025 23:40:18 GMT
location: /plot/
vary: accept-encoding
server: cloudflare
cf-ray: 98c9f646fded7679-BLR
HTTP/2 200
date: Fri, 10 Oct 2025 23:40:18 GMT
content-type: text/html; charset=utf-8
cf-ray: 98c9f646fdef7679-BLR
cf-cache-status: DYNAMIC
access-control-allow-origin: *
age: 0
cache-control: max-age=600
etag: W/"68d40ed0-10614"
expires: Fri, 10 Oct 2025 23:50:18 GMT
last-modified: Wed, 24 Sep 2025 15:31:28 GMT
server: cloudflare
strict-transport-security: max-age=31556952
vary: Accept-Encoding
via: 1.1 varnish
x-cache: MISS
x-cache-hits: 0
x-fastly-request-id: 6bdbe8805d347cab28d89326c4bc088105f4b45c
x-github-request-id: 9304:3B0BAF:170C1:1F9DF:68E99962
x-proxy-cache: MISS
x-served-by: cache-bom-vanm7210030-BOM
x-timer: S1760139619.614820,VS0,VE292
content-encoding: gzip
Plot | The JavaScript library for exploratory data visualization
Skip to content Observable Plot The JavaScript library for exploratory data visualization Create expressive charts with concise code
The JavaScript library for
exploratory data visualization