Why 21YunBox Pricing Contact Log in
Language
English ✓日本語
Talk to an expert Test your site in China

Does CanvasJS Work in China? Reachability, Reliability & Where ICP Applies

CanvasJS is a client-side charting library you can self-host or load from its vendor CDN (cdn.canvasjs.com). Pull it from that offshore CDN and the script can be slow or unreachable from mainland China, so the chart never renders; the library carries no personal data of its own, so the risk is reachability, not PIPL. The ICP duty sits on your hosting site. A delivery-first look, honestly framed.

Does CanvasJS work in China?

Whether CanvasJS works in mainland China is a reachability and delivery question, not a data-privacy one. CanvasJS renders charts in the browser from data your own application already holds, and ships no personal data of its own, so the library itself raises no PIPL or ICP duty — the risk is simply whether its script arrives.

CanvasJS's own download page offers the library two ways that matter here: a direct download or npm install you can bundle yourself, or a hosted CDN link — <script src="https://cdn.canvasjs.com/ga/canvasjs.min.js"></script>, which loads from cdn.canvasjs.com, an offshore vendor CDN with no mainland-China point of presence of its own. Load it from that CDN and a mainland browser fetches a render-blocking script across the border; when that fetch is slow, throttled or fails, the chart never paints — a blank space where your visualization should be. The compliance line sits one step away, on the site that embeds it, which still needs an ICP filing to serve the mainland. The table below maps each point.

This is a delivery and risk picture, not a legal verdict — your ICP and data position depend on what your own site serves and collects. Our China team can map the in-country delivery and ICP path with you →

Compliance snapshot

  • ✓ CanvasJS is a client-side chart library — it renders charts in the browser from your own data and ships no personal data of its own, so the library itself carries no PIPL or ICP duty
  • ! Its own download page offers a hosted CDN link, cdn.canvasjs.com/ga/canvasjs.min.js — an offshore vendor CDN with no mainland-China point of presence of its own
  • ! Loaded from that CDN, the script can be slow, throttled or fail from inside the mainland — and if canvasjs.min.js doesn't arrive, the chart never paints
  • ! The ICP duty sits one step away: the public site embedding CanvasJS still needs an ICP filing to serve the mainland
  • ✓ Honest fix, no circumvention: CanvasJS also ships as a download and an npm package, so serve the same script from ICP-filed, in-country delivery in front of your origin — no rebuild
Get a compliance assessment
Same charts, served in-country — no rebuild

What Canvasjs's own documentation says about China

FactPrimary source
On CanvasJS's own download page, one of the ways to add the library is a hosted CDN link: under the heading "CanvasJS Chart CDN Link," the page gives <script src="https://cdn.canvasjs.com/ga/canvasjs.min.js"></script>, which loads from cdn.canvasjs.com — the vendor's own CDN, served from offshore with no mainland-China point of presence of its own. That script is front-end charting code, not your users' data. Fetched from inside the mainland, an offshore script host like this can load slowly, be throttled, or fail to arrive — and because CanvasJS draws the chart with that script at load time, a stalled or failed fetch leaves the chart area blank (an inference from how offshore CDNs serve the mainland, not a 21YunBox measurement). The current China delivery status of cdn.canvasjs.com is worth confirming with CanvasJS. CanvasJS — Download / CDN link, retrieved 2026-10-08
The same download page also offers CanvasJS as a direct download and an npm install ("JavaScript, React, Angular, Vue, etc."), so loading it from the offshore CDN is optional, not required. The identical canvasjs.min.js can be bundled into your build or served from your own origin — which is exactly what makes an in-country, ICP-filed delivery path possible without changing the charts your developers already built. CanvasJS — Download, retrieved 2026-10-08
A public-facing website shown to mainland-China visitors from inside the mainland requires an ICP filing (ICP 备案) under the State Council's Order No. 292 and MIIT's Order No. 33, tied to a hosting resource inside the mainland. That duty falls on your site — the one embedding CanvasJS — not on a charting library or its CDN, which carry no ICP filing of their own. Reaching China from an offshore script host is not the same as being cleared to operate there. PRC Regulations on Telecommunications (State Council Order No. 292); Administrative Measures for the Filing of Non-operational Internet Information Services (MIIT Order No. 33)
CanvasJS renders charts in the browser from data your own application already holds; it transfers no personal data of its own, so loading it is not itself a cross-border transfer of personal information. China's Personal Information Protection Law governs the transfer and storage of personal information, so the PIPL and data-residency questions belong to your own site's user-data flows — its forms, logins, analytics and storage — not to loading a charting script. Bolting a data-residency story onto a front-end chart library would be inaccurate. PIPL Chapter III, Articles 38–43 and Article 40; Cybersecurity Law Article 39 (formerly Article 37)

Sources verified by the 21YunBox compliance team on 2026-10-08.

For a China-facing site, the useful question about CanvasJS is not a legal one but a practical one: do the charts actually draw? CanvasJS is a client-side charting library — you hand it your data and it renders interactive HTML5 charts in the visitor’s browser. The library file is public front-end code, not your users’ data, so loading it is neither a cross-border transfer of personal information nor something that carries an ICP filing of its own. The real exposure is delivery: if you pull the library from the vendor’s CDN at cdn.canvasjs.com, that script arrives from an offshore edge with no presence inside mainland China, and a page that fetches it at request time leans on infrastructure that can be slow or unreachable from the mainland. When the CanvasJS script stalls, the chart that depends on it never appears. The single compliance thread runs one step away — through the website that embeds the charts, which still has to be ICP-filed and hosted inside the country to serve the mainland.

CanvasJS's download page showing its CDN section — under the heading CanvasJS Chart CDN Link, a script tag loading https://cdn.canvasjs.com/ga/canvasjs.min.js — alongside direct-download and npm install options; cdn.canvasjs.com is an offshore vendor CDN with no mainland-China point of presence
CanvasJS's own download page hands you the library from its CDN: under the heading “CanvasJS Chart CDN Link,” the embed is <script src="https://cdn.canvasjs.com/ga/canvasjs.min.js"></script>, loading from cdn.canvasjs.com — the vendor's own CDN, served from offshore with no mainland-China point of presence of its own. The same page also offers a direct download and an npm install, so the identical script can be self-hosted instead. Source: canvasjs.com/download

CanvasJS in China at a glance

What decides it What it means in China
What it is A client-side HTML5/JavaScript charting library. It draws charts in the browser from data your own application provides — public front-end code, not user data — so the China question is delivery, not PIPL.
Where it loads from Either bundled by you (its download page offers a direct download and an npm install) or pulled from the vendor CDN, cdn.canvasjs.com — an offshore vendor CDN with no mainland-China point of presence of its own.
Reachable from the mainland? Loaded from that offshore CDN, the script can be slow, throttled or unreachable from inside the mainland — a delivery risk, not a clean block. When canvasjs.min.js doesn't arrive, the chart doesn't render.
Data residency / PIPL Not triggered by CanvasJS itself: it moves chart-rendering code, not personal data. The cross-border-transfer question belongs to whatever your own site does with user data, elsewhere.
ICP filing Not on the charting library or its CDN — a front-end script host carries none. The ICP duty sits on the site that embeds CanvasJS, which must be filed and hosted in-country to serve the mainland.

A browser-side chart library — why this is a delivery question, not a data one

CanvasJS’s download page points you at a few ways to add the library: a direct download, an npm install, or a single <script> from its CDN. However you add it, what ships is chart-rendering code, not personal information — CanvasJS draws its graphs in the browser from data your own application already holds, and sends none of your users’ data back to itself. That shapes how to judge CanvasJS in China. There is no cross-border transfer of personal data to clear and no ICP filing attached to the library or its CDN; claiming otherwise — dressing a front-end chart script in a data-residency story — would not be honest. The question that actually bites is whether that script can be fetched, quickly and every time, from inside the mainland, because a chart that never loads is a chart your visitors never see.

Loaded from the vendor’s CDN, a script on the wrong side of the border

Take the hosted route its download page offers — <script src="https://cdn.canvasjs.com/ga/canvasjs.min.js"></script> — and every mainland visitor’s browser reaches across the border to cdn.canvasjs.com, an offshore vendor CDN with no point of presence of its own inside mainland China. The outcome is the familiar one for any offshore script host: from inside the country it can be slow, throttled or simply unreachable, and which of those you get shifts with the network, the route and the hour. We put no number on that here — there is no first-party measurement for this specific dependency, so it stays a qualitative risk, and the current China status of the vendor’s CDN is worth confirming with CanvasJS. The mechanism is what makes it bite. CanvasJS does not ship a static picture; the chart is painted by the script at load time, so if that fetch stalls or fails there is nothing to fall back to — the chart area stays empty, or the layout shifts as the late script finally lands. CanvasJS does give you an honest way out of the offshore round trip: because the library is also a plain download and an npm package, you can serve the same canvasjs.min.js from your own origin instead of its CDN. That helps only as far as your origin does — if it is still offshore, the cross-border hop and the missing in-country, ICP-filed footing both remain.

The compliance line falls on your site, not on the charting library

The compliance question does have a home — it just isn’t the chart library. Neither CanvasJS nor its CDN needs an ICP filing; the public site that renders the charts does. A website shown to mainland visitors turns on an ICP filing (ICP 备案) under State Council Order No. 292 and MIIT Order No. 33, tied to a hosting resource physically inside the mainland; and if that site collects personal information from Chinese users, the cross-border transfer and data-residency rules of the Personal Information Protection Law apply to that site’s own data flows (PIPL Articles 38–43 and 40; Cybersecurity Law Article 39 (formerly Article 37)). CanvasJS sits inside none of that — the chart code carries no personal data — yet a mainland site that quietly depends on an offshore chart CDN inherits its delivery weakness while still owing every one of its own compliance duties.

Treat this as a delivery-and-risk map rather than a ruling: whether a flaky offshore script merely delays your charts or leaves the page visibly broken, and whether your own hosting and data footing is sound, turns on how your front-end is assembled and what you collect — questions to close out with counsel against your real dependencies.

Where 21YunBox fits — a compliant overlay, not a migration

You do not rewrite your charts or swap out CanvasJS. What we remove is the offshore round trip: the same canvasjs.min.js your pages already load is delivered from ICP-filed infrastructure inside the mainland, placed in front of the origin you already run — no rebuild, no forked codebase, and no new charting library for your team to learn. Alongside that, our China team looks at the piece a script CDN can never cover for you: whether the site serving those charts is itself ICP-filed, hosted in-country, and sound on PIPL for the user data it collects. Your chart definitions stay exactly where they are; what changes is where the bytes come from, so the charts actually render for mainland visitors.

Get a compliance assessment →


Related reading:

Frequently Asked Questions

Is CanvasJS blocked in China?

Not a clean block. CanvasJS is a client-side charting library, and if you load it from the vendor CDN (cdn.canvasjs.com) that host sits offshore with no mainland-China point of presence of its own, so from inside the country the script can be slow, throttled or unreachable rather than reliably available. Because the chart is drawn by that script at load time, a stalled or failed fetch shows up visibly: the chart area stays blank, or the page shifts as the late script finally lands. Treat it as an unreliable offshore dependency, not a guaranteed block — a definitive block claim would need verification from inside China, and the current status of the vendor's CDN is worth confirming with CanvasJS.

Does using CanvasJS create an ICP or PIPL problem?

Not on CanvasJS itself. It renders charts in the browser from data your own application already holds and ships no personal data of its own, so loading it is neither a cross-border transfer of personal information nor an act that carries an ICP filing. The ICP duty sits on your public site that serves mainland visitors, and PIPL applies to that site's own user-data flows — its forms, logins, analytics and storage. Those are worth confirming with counsel for your entity and data volumes; the charting library is not where that question lives.

Can 21YunBox help serve CanvasJS reliably in China?

Yes. Because CanvasJS also ships as a download and an npm package, our China team can serve the same canvasjs.min.js from ICP-filed, in-country delivery set in front of your existing origin — no rebuild, and no change to the charts your developers built — and check that the site embedding it is itself ICP-filed, hosted in-country, and sound on PIPL for the user data it handles. Get in touch to work through your specific setup.

ARTICLES RELATED TO CANVASJS

Make Your Site Work inside the Great Firewall of China

Enter your information, and our staff will assist you in getting a 21YunBox account for China.

Make Your Site Work Within the Great Firewall of China
Make Your Site Work Within the Great Firewall of China

By clicking 'Get Started', I also agree to 21YunBox's Terms of Service and Privacy Policy.