Training Example: Chart.js – Review the Data, Give Your Score & Compare to the Real AI Evaluation

Industry Context — Common BS Fingerprints in Software, SaaS & Tech Products
Generic Claims: the all-in-one platform, trusted by thousands of companies, increase productivity by X percent, save hours every week…
Red Flags: AI claims without explaining what the AI does, customer logos without case study or testimonial evidence, no live product access or demo, SOC 2 claims without audit period or report availability…
Semantic Drift Patterns: homepage claims AI-powered but product is rules-based, claims enterprise-grade but pricing page shows startup tiers only, homepage shows Fortune 500 logos but case studies are small businesses, claims all-in-one but integration page shows critical missing pieces…
Proof Expectations: live product demo or free trial access, specific feature documentation with screenshots, verified customer logos with published case studies, third-party review scores on G2, Capterra, or TrustRadius…

Chart.js

(https://chartjs.org) 📸 Data Snapshot: May 29, 2026

Analyze the raw signals below. How would a machine score this business’s credibility?

Here are the exact signals captured from up to six pages of the site — the same raw inputs the evaluation engine analyzed. They are grouped by signal type so you can weigh each the way the machine does.

🏗️ Semantic Structure — heading hierarchy & page identity (Info Density · Commodity Fingerprint)
HOMEPAGE Chart.js | Open source HTML5 Charts for your website (https://chartjs.org)
Title

Chart.js | Open source HTML5 Charts for your website

Meta

Simple yet flexible JavaScript charting library for the modern web

H1 Chart.js
H2 Simple yet flexible JavaScript charting library for the modern web
H2 Find Chart.js on GitHub or Read detailed documentation
H3 New in 4.0 Colors plugin
H3 New in 4.0 Tree-shaking
H3 New in 3.5 Scale stacking
H3 New in 3.4 Subtitle plugin
H3 New in 3.1 Line segment styling
H3 New in 3.0 Advanced animations
H3 New in 3.0 Performance!
H3 New in 2.0 Mixed chart types
H3 New in 2.0 New chart axis types
H3 New in 2.0 Animate everything!
H4 Open source
H4 8 Chart types
H4 HTML5 Canvas
H4 Responsive
HEADING_BODY Colors | Chart.js (https://chartjs.org/docs/latest/general/colors.html)
Title

Colors | Chart.js

Meta

Open source HTML5 Charts for your website

H1 # Colors
H2 # Default colors
H2 # Color formats
H2 # Patterns and Gradients
H3 # Per-dataset color settings
H3 # Default color palette
H3 # Dynamic datasets at runtime
H3 # Advanced color palettes
HEADING_BODY Integration | Chart.js (https://chartjs.org/docs/latest/getting-started/integration.html)
Title

Integration | Chart.js

Meta

Open source HTML5 Charts for your website

H1 # Integration
H2 # Script Tag
H2 # Bundlers (Webpack, Rollup, etc.)
H2 # CommonJS
H2 # RequireJS
H3 # Quick start
H3 # Bundle optimization
H3 # Helper functions
HEADING_BODY Subtitle | Chart.js (https://chartjs.org/docs/latest/configuration/subtitle.html)
Title

Subtitle | Chart.js

Meta

Open source HTML5 Charts for your website

H1 # Subtitle
H2 # Subtitle Configuration
H2 # Example Usage
📝 The Narrative — clean text per page (Info Density · Semantic Coherence)
HOMEPAGE (https://chartjs.org) Chart.js | Open source HTML5 Charts for your website
[IMG: logo]

[H1] Chart.js

[H2] Simple yet flexible JavaScript charting library for the modern web

Get Started
Samples
Ecosystem
GitHub

[H3]
New in 4.0
Colors plugin
Default palette of Chart.js brand colors is available as a built-in time-saving zero-configuration plugin.

[H3]
New in 4.0
Tree-shaking
JavaScript bundle size can be reduced by dozens of kilobytes by registering only necessary components.

[IMG: Example of reduced bundle size from 48 KB to 14 KB]

[H3]
New in 3.5
Scale stacking
Layout boxes can be stacked and weighted in groups.

[H3]
New in 3.4
Subtitle plugin
A secondary title plugin with all the same options as main title.

[H3]
New in 3.1
Line segment styling
Line segments can be styled by any user defined criteria.

[H3]
New in 3.0
Advanced animations
Transitions of every property in every element can be configured individually and independently.

[H3]
New in 3.0
Performance!
Numerous performance enhancements have been introduced. This example has 1M (2x500k) points with the new decimation plugin enabled.

[H3]
New in 2.0
Mixed chart types
Mix and match bar and line charts to provide a clear visual distinction between datasets.

[H3]
New in 2.0
New chart axis types
Plot complex, sparse datasets on date time, logarithmic or even entirely custom scales with ease.

[H3]
New in 2.0
Animate everything!
Out of the box stunning transitions when changing data, updating colours and adding datasets.

[H4] Open source
Chart.js is a community maintained project, contributions welcome!

[H4] 8 Chart types
Visualize your data in 8 different ways; each of them animated and customisable.

[H4] HTML5 Canvas
Great rendering performance across all modern browsers (IE11+).

[H4] Responsive
Redraws charts on window resize for perfect scale granularity.

[H2]
Find Chart.js on GitHub or Read detailed documentation
1995 chars
SUB-PAGE (https://chartjs.org/docs/latest/general/colors.html) Colors | Chart.js
[H1] # Colors
Charts support three color options: for geometric elements, you can change background and border colors; for textual elements, you can change the font color. Also, you can change the whole canvas background.
[H2] # Default colors
If a color is not specified, a global default color from Chart.defaults is used: Name Type Description Default value backgroundColor Color Background color rgba(0, 0, 0, 0.1) borderColor Color Border color rgba(0, 0, 0, 0.1) color Color Font color #666 You can reset default colors by updating these properties of Chart.defaults: Chart.defaults.backgroundColor = '#9BD0F5';
Chart.defaults.borderColor = '#36A2EB';
Chart.defaults.color = '#000';
[H3] # Per-dataset color settings
If your chart has multiple datasets, using default colors would make individual datasets indistinguishable. In that case, you can set backgroundColor and borderColor for each dataset: const data = {
labels: ['A', 'B', 'C'],
datasets: [
{
label: 'Dataset 1',
data: [1, 2, 3],
borderColor: '#36A2EB',
backgroundColor: '#9BD0F5',
},
{
label: 'Dataset 2',
data: [2, 3, 4],
borderColor: '#FF6384',
backgroundColor: '#FFB1C1',
}
]
};
However, setting colors for each dataset might require additional work that you'd rather not do. In that case, consider using the following plugins with pre-defined or generated palettes.
[H3] # Default color palette
If you don't have any preference for colors, you can use the built-in Colors plugin. It will cycle through a palette of seven Chart.js brand colors:
[IMG: Colors plugin palette]
All you need is to import and register the plugin: import { Colors } from 'chart.js';
Chart.register(Colors);
Note If you are using the UMD version of Chart.js, this plugin will be enabled by default. You can disable it by setting the enabled option to false: const options = {
plugins: {
colors: {
enabled: false
}
}
};
[H3] # Dynamic datasets at runtime
By default, the colors plugin only works when you initialize the chart without any colors for the border or background specified.
If you want to force the colors plugin to always color your datasets, for example, when using dynamic datasets at runtime you will need to set the forceOverride option to true: const options = {
plugins: {
colors: {
forceOverride: true
}
}
};
[H3] # Advanced color palettes
See the awesome list (opens new window) for plugins that would give you more flexibility defining color palettes.
[H2] # Color formats
You can specify the color as a string in either of the following notations: Notation Example Example with transparency Hexadecimal (opens new window) #36A2EB #36A2EB80 RGB (opens new window) or RGBA (opens new window) rgb(54, 162, 235) rgba(54, 162, 235, 0.5) HSL (opens new window) or HSLA (opens new window) hsl(204, 82%, 57%) hsla(204, 82%, 57%, 0.5) Alternatively, you can pass a CanvasPattern (opens new window) or CanvasGradient (opens new window) object instead of a string color to achieve some interesting effects.
[H2] # Patterns and Gradients
For example, you can fill a dataset with a pattern from an image. const img = new Image();
img.src = 'https://example.com/my_image.png';
img.onload = () => {
const ctx =
3207 chars
SUB-PAGE (https://chartjs.org/docs/latest/getting-started/integration.html) Integration | Chart.js
[H1] # Integration
Chart.js can be integrated with plain JavaScript or with different module loaders. The examples below show how to load Chart.js in different systems. If you're using a front-end framework (e.g., React, Angular, or Vue), please see available integrations (opens new window).
[H2] # Script Tag
<script src="path/to/chartjs/dist/chart.umd.min.js"></script>
<script>
const myChart = new Chart(ctx, {...});
</script>
[H2] # Bundlers (Webpack, Rollup, etc.)
Chart.js is tree-shakeable, so it is necessary to import and register the controllers, elements, scales and plugins you are going to use.
[H3] # Quick start
If you don't care about the bundle size, you can use the auto package ensuring all features are available: import Chart from 'chart.js/auto';
[H3] # Bundle optimization
When optimizing the bundle, you need to import and register the components that are needed in your application. The options are categorized into controllers, elements, plugins, scales. You can pick and choose many of these, e.g. if you are not going to use tooltips, don't import and register the Tooltip plugin. But each type of chart has its own bare-minimum requirements (typically the type's controller, element(s) used by that controller and scale(s)): Bar chart
BarController BarElement Default scales: CategoryScale (x), LinearScale (y) Bubble chart
BubbleController PointElement Default scales: LinearScale (x/y) Doughnut chart
DoughnutController ArcElement Not using scales Line chart
LineController LineElement PointElement Default scales: CategoryScale (x), LinearScale (y) Pie chart
PieController ArcElement Not using scales PolarArea chart
PolarAreaController ArcElement Default scale: RadialLinearScale (r) Radar chart
RadarController LineElement PointElement Default scale: RadialLinearScale (r) Scatter chart
ScatterController PointElement Default scales: LinearScale (x/y) Available plugins: Decimation Filler - used to fill area described by LineElement, see Area charts Legend SubTitle Title Tooltip Available scales: Cartesian scales (x/y) CategoryScale LinearScale LogarithmicScale TimeScale TimeSeriesScale Radial scales (r) RadialLinearScale
[H3] # Helper functions
If you want to use the helper functions, you will need to import these separately from the helpers package and use them as stand-alone functions. Example of Converting Events to Data Values using bundlers. import Chart from 'chart.js/auto';
import { getRelativePosition } from 'chart.js/helpers';
const chart = new Chart(ctx, {
type: 'line',
data: data,
options: {
onClick: (e) => {
const canvasPosition = getRelativePosition(e, chart);
// Substitute the appropriate scale IDs
const dataX = chart.scales.x.getValueForPixel(canvasPosition.x);
const dataY = chart.scales.y.getValueForPixel(canvasPosition.y);
}
}
});
[H2] # CommonJS
Because Chart.js is an ESM library, in CommonJS modules you should use a dynamic import: const { Chart } = await import('chart.js');
[H2] # RequireJS
Important: RequireJS can load only AMD modules (opens new window), so be sure to require one of the UMD builds instead (i.e. dist/chart.umd.min.js). require(['path/to/chartjs/dist/chart.umd.min.js'],
3215 chars
SUB-PAGE · THIN (https://chartjs.org/docs/latest/configuration/subtitle.html) Subtitle | Chart.js
[H1] # Subtitle
Subtitle is a second title placed under the main title, by default. It has exactly the same configuration options with the main title.
[H2] # Subtitle Configuration
Namespace: options.plugins.subtitle. The global defaults for subtitle are configured in Chart.defaults.plugins.subtitle. Exactly the same configuration options with title are available for subtitle, the namespaces only differ.
[H2] # Example Usage
The example below would enable a title of 'Custom Chart Subtitle' on the chart that is created. const chart = new Chart(ctx, {
type: 'line',
data: data,
options: {
plugins: {
subtitle: {
display: true,
text: 'Custom Chart Subtitle'
}
}
}
});
685 chars
🛡️ Trust Signals — reviews, proof links, trust-theatre flag (Trust & Proof)
0Review mentions (all pages)
0External proof links (all pages)
PageReviewsProof links
/ (home) 0 0
/docs/latest/general/colors.html 0 0
/docs/latest/getting-started/integration.html 0 0
/docs/latest/configuration/subtitle.html 0 0
🔗 Identity & Technical Layer — schema JSON-LD: identity chains, entity gaps (Identity & Authority)
Homepage — no schema detected (entity gap)
/docs/latest/general/colors.html — no schema detected (entity gap)
/docs/latest/getting-started/integration.html — no schema detected (entity gap)
/docs/latest/configuration/subtitle.html — no schema detected (entity gap)

Your Diagnosis

Before revealing the machine’s verdict, predict the BS score for each signal. Higher = more BS (more fluff, less verifiable substance). Drag each slider, then submit to compare your judgment against the engine.

Information Density 0 / 30
Read the Narrative & headings: do hard facts (prices, dates, numbers) outweigh fluff power-words?
Semantic Coherence 0 / 20
Compare the homepage promise against the sub-page reality. Do they hold the same line?
Trust & Proof 0 / 20
Weigh review mentions against actual external proof links. Claims without verification = theatre.
Commodity Fingerprint 0 / 15
Check headings & narrative against the industry clichés in the setup above.
Identity & Authority 0 / 15
Inspect the schema: is there real Organization/Person identity with sameAs links, or gaps?
Your predicted BS score 0 / 100
💡 Stuck? Reveal the heuristic lens — how the deterministic page-auditor reads each signal (no AI, pure pattern rules)

These are the structural rules a local, deterministic auditor applies — the same lens you can use to judge each signal. They describe what to look for, not this company’s result.

Information Density

Classify each sentence as substantive or hollow. Grounding markers — numbers, currencies, dates, technical units, named entities — outweigh marketing adjectives. When fluff sits right next to hard evidence, the fluff is forgiven.

Semantic Alignment

Pull the main entities out of the H1, then check whether they actually recur through the body. A page that announces one thing and then talks about another drifts. Headings with no real sentences underneath read as pseudo-substance.

Trust & Proof

Count trust words (review, testimonial, rating, verified) against real outbound proof links (Google, Trustpilot, Clutch, G2, Yelp). Lots of trust language with zero verification links is trust theatre. Unlinked logo galleries count against it.

Commodity Fingerprint

Look at how much sentence length varies. Natural writing varies its rhythm; templated or mass-produced copy is statistically uniform. Very low variation reads as commodity content — unless unique named entities break the pattern.

Identity & Authority

Inspect the JSON-LD. Is there an Organization or Person schema, and does it carry sameAs links to real external profiles (LinkedIn, socials)? Missing schema or no identity declaration signals an anonymous entity.

Want to apply this lens yourself? The free BS Indicator Chrome extension runs these heuristic checks live on any page. Bear in mind it is a single-page, deterministic tool — it relies only on pattern rules for the page in front of it and does not perform the cross-page semantic correlation this audit uses, so its readout is a starting lens, not the full verdict.

B
BS Level
Software, SaaS & Tech Products
33.2 Avg BS

Based on 1130 businesses audited.

BS Detector

Software, SaaS & Tech Products BS: Chart.js (chartjs.org)

https://chartjs.org 📍 Industry: Software, SaaS & Tech Products
6 BS / 100

Chart.js is a rare example of a ‘Zero-BS’ technical site that prioritizes developer utility over marketing conversion. Its score of 6 reflects a project that has nothing to hide and everything to document. It is a benchmark for how technical products should communicate with their audience.

Info Density Power-words vs. Substance ratio.
2
7% BS
Semantic Coherence Homepage promise vs. Sub-page reality.
0
0% BS
Trust & Proof Verifiable evidence vs. Trust Theatre.
1
5% BS
Commodity Fingerprint Detection of industry clichés/templates.
2
13% BS
Identity & Authority Expert verifiability & Schema depth.
1
7% BS

Integrate JSON-LD SoftwareSourceCode schema to improve machine-readable authority and search visibility. Add a dedicated ‘Who uses Chart.js’ section with verifiable links to major open-source projects or companies to provide social proof without resorting to fluff. Expand the ‘Subtitle’ documentation to include more complex, real-world layout examples beyond basic configuration. Ensure all internal ‘awesome list’ links are active to maintain the external proof path density.

The website perfectly aligns with the Software, SaaS & Tech Products industry, specifically as a developer-centric open-source library. The content is technical, focusing on implementation, API references, and performance metrics rather than high-level business value propositions.

“The score of 6 is one of the lowest possible, driven by the site's complete lack of semantic drift and its high information density. Minor points were only deducted for the absence of structured data and a few subjective adjectives like 'stunning transitions.' The site serves as a functional tool rather than a marketing vehicle.”

Verified Analysis Date: May 29, 2026 © 1EuroSEO Independent Evaluator — Non-Sponsored Result
Brand AI Reputation