Nutrient

Home

SDK

Software Development Kits

Low-Code

IT Document Solutions

Workflow

Workflow Automation Platform

DWS API

Document Web Services

T
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Company

About

Team

Careers

Contact

Security

Partners

Legal

Resources

Blog

Events

Try for free

Contact Sales
Contact sales
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

products

Web

Web

Document Authoring

AI Assistant

Salesforce

Mobile

iOS

Android

visionOS

Flutter

React Native

MAUI

Server

Document Engine

Document Converter Services

.NET

Java

Node.js

AIDocument Processing

All products

solutions

USECASES

Viewing

Editing

OCR and Data Extraction

Signing

Forms

Scanning & Barcodes

Markup

Generation

Document Conversion

Redaction

Intelligent Doc. Processing

Collaboration

Authoring

Security

INdustries

Aviation

Construction

Education

Financial Services

Government

Healthcare

Legal

Life Sciences

All Solutions

Docs

Guides overview

Web

AIAssistant

Document Engine

iOS

Android

visionOS

Java

Node.js

.NET

Document Converter Services

Downloads

Demo

Support

Log in

Resources

Blog

Events

Pricing

Try for free

Free Trial

Company

About

Security

Partners

Legal

Contact Sales
Contact Sales
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

products

Products overview

Document Converter

Document Editor

Document Searchability

Document Automation Server

Integrations

SharePoint

Power Automate

Nintex

OneDrive

Teams

Window Servers

solutions

USECASES

Conversion

Editing

OCR Data Extraction

Tagging

Security Compliance

Workflow Automation

Solutions For

Overview

Legal

Public Sector

Finance

All Solutions

resources

Help center

Document Converter

Document Editor

Document Searchability

Document Automation Server

learn

Blog

Customer stories

Events

Support

Log in

Pricing

Try for free

Company

About

Security

Partners

Legal

Contact Sales
Contact Sales
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Product

Product overview

Process Builder

Form Designer

Document Viewer

Office Templating

Customization

Reporting

solutions

Industries

Healthcare

Financial

Manufacturing

Pharma

Education

Construction

Nonprofit

Local Government

Food and Beverage

Departments

ITServices

Finance

Compliance

Human Resources

Sales

Marketing

Services

Overview

Capex-accelerator

Process Consulting

Workflow Prototype

All Solutions

resources

Help center

guides

Admin guides

End user guides

Workflow templates

Form templates

Training

learn

Blog

Customer stories

Events

Support

Pricing

Support

Company

About

Security

Partners

Legal

Try for Free
Contact Sales
Try for Free
Contact Sales
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Services

Generation

Editing

Conversion

Watermarking

OCR

Table Extraction

Pricing

Docs

Log in

Try for Free
Try for Free

Free trial

Blog post

Evaluating the render fidelity of PDF.js

Peter Steinberger Peter Steinberger

Table of contents

  • What’s the difference between PDF.js and Nutrient?
  • New features and enhancements in Nutrient Web SDK
  • How does PDF.js compare?
  • The value of quality assurance and support
  • Conclusion

In this post, I’ll talk about the advantages of choosing a commercial solution over PDF.js, with a particular focus on render fidelity.

Illustration: Evaluating the render fidelity of PDF.js

TL;DR

PDF.js has improved, fixing issues like blurry QR codes and missing images, but it still struggles with washed-out graphics and rendering inconsistencies. Nutrient Web SDK offers a superior alternative with WebAssembly-powered performance, advanced document editing, AI-driven enhancements, and robust security features. If you need reliable, high-fidelity PDF rendering, Nutrient Web SDK is the better choice. Read on for details!

Every week we work with partners, helping them migrate projects from the open source PDF.js project to our commercial Nutrient Web SDK. This often happens after customer complaints reach a critical level and attempts at fixing the open source code fail. Meanwhile, our Sales team is often asked why customers should choose a commercial solution over a free one.

In this article, I try to be as fair and unbiased as possible. Our foundation in working with our partners is one of trust and mutual respect, and we have no interest in exaggerating for marketing reasons. All bugs are reproducible and public and were verified at the time of writing this article. If you see any issues with this article, please contact me via Twitter.

What’s the difference between PDF.js and Nutrient?

PDF.js started as an experiment at Mozilla to see how far the company could push the browser with pure JavaScript rendering. It heavily relies on advanced browser features, which often results in inconsistent document rendering between different browsers or even different operating systems. This makes QA extremely cost intensive, as there’s a need to test Windows, macOS, Linux with Chrome, Firefox, Safari, Edge (which is now Chromium-based), and ideally the range of most popular options. Oh, and don’t forget to test mobile browsers, as they also behave differently.

There are also various commercialized variants of PDF.js that use the same render engine. As such, they all have the same problems as the open source version — specifically, they don’t include support for render fidelity issues.

Nutrient Web SDK takes a more nimble approach to document rendering, using the same C++ rendering core that we use across all our platforms. We use WebAssembly to run our existing render core in the browser (via standalone deployment) or on servers (via Docker deployment). This guarantees that we render documents the same everywhere — no matter the browser version or operating system. There will still be differences in how browsers render the user interface, however, we can guarantee documents look exactly as they should.

Our PDF rendering engine shares code with PDFium, the PDF engine used in Google Chrome and on the Android operating system. This guarantees that it’s widely battle-tested and secure and that it renders correctly. Our fork heavily improves performance, so it still performs well in browsers.

New features and enhancements in Nutrient Web SDK

While accurate rendering is essential, modern document workflows require more than just viewing. Nutrient Web SDK adds powerful tools for editing, collaboration, and security, making it a complete solution for handling PDFs and other documents.

Rendering and performance enhancements

  • WebAssembly-powered performance — Nutrient Web SDK now delivers even faster PDF rendering, with reduced memory usage and efficient page preloading.

  • Advanced annotation rendering — Supports blending modes and appearance streams for annotations, improving fidelity when exporting PDFs.

  • Shadow DOM for integration — Eliminates iframe overhead, improving speed and integration with frameworks like React and Angular.

Document editing and form handling

  • Full support for form filling and editing — Users can now not only fill out forms, but also create and manipulate form fields programmatically.

  • Page manipulation tools — Page cropping, rotation, reordering, and extraction are now built-in, allowing for complete document editing in the browser.

Office document support

  • Native viewing of Word, Excel, and PowerPoint files — No server or Microsoft Office required; documents can be converted and displayed seamlessly.

  • Multi-format conversion — Convert Office files to PDF, extract content, and enable annotations across multiple formats.

AI-powered enhancements

  • AI Assistant for document summarization and redaction — Users can ask questions about a document, summarize content, or apply AI-powered redactions.

  • Text comparison tool — Highlights differences between document versions, making revision tracking easier.

Security and compliance improvements

  • AES-256 encryption support — Ensures high-security document storage and transmission.

  • Long-term validation (LTV) for digital signatures — Allows signatures to remain verifiable even after certificate expiration.

  • Built-in compliance tools — Redaction and permission enforcement tools ensure documents meet regulatory standards like GDPR and HIPAA.

How does PDF.js compare?

While PDF.js has improved since 2020, some limitations persist. Let’s examine the current state of its rendering fidelity.

Render fidelity 1: Washed-out graphics

The combination of rendering bugs in the PDF.js render engine combined with render bugs in browsers makes it extremely challenging to be accurate.

Problems with rendering can show up as relatively harmless image problems, like the effect in the following image, where it looks like an inkjet printer ran out of ink.

The issue with washed-out graphics remains unresolved as of 2025. While some rendering improvements have been made, there are still cases where PDF.js fails to render colors accurately, leading to faded or “inkjet low ink” effects. This problem, first reported in 2013, is still open in the PDF.js issue tracker.

Render fidelity 2: Blurry QR codes (fixed in 2021)

Previously, PDF.js had trouble interpreting image masks, which led to blurry QR codes that were hard to scan. This issue, reported in 2014, remained unfixed until late 2021, when a patch was finally merged. The fix correctly interprets image smoothing settings in PDFs, meaning QR codes now render as expected in modern versions of PDF.js.

Render fidelity 3: Missing images (fixed in 2022)

Another serious issue was missing images due to problems with pattern fills and soft masks. This problem, which led to graphical elements disappearing in certain PDFs, was reported in 2015. Fortunately, a fix was implemented in 2022, ensuring such patterns are now rendered correctly in the latest versions of PDF.js.

The value of quality assurance and support

Most of our customers have no interest in running a QA department for their PDF viewer — it should just work. However, all software has bugs; this includes PDF.js, and Nutrient Web SDK as well.

When your customers have issues with documents not rendering as they should, they’ll expect a fix. We prioritize a fast support experience that fixes issues quickly, and we release new tested versions of our SDK every two to four weeks.

What’s important for your business is that you can rely on a document looking correct both in your browser and on all the other desktop and mobile browsers out there. Having to test all browser and OS combinations is extremely time and labor intensive.

If you license Nutrient Web SDK and encounter an issue with render fidelity, we’re here to help. In fact, we regularly fix issues in our render core and even contribute back to Google’s PDFium so that these issues are also fixed in Google Chrome and Android’s native PDF renderer.

Conclusion

Since this article was first written in 2020, Nutrient Web SDK has made significant advancements, introducing AI-powered features, Office document support, improved annotation tools, and cutting-edge security measures. Meanwhile, PDF.js has resolved some past issues but still suffers from rendering inconsistencies and lacks the depth of features found in commercial solutions.

If you’re looking for a high-performance, feature-rich document viewer and editor, head over to our trial page and download Nutrient Web SDK.

Explore related topics

PDF.js PDF Insights Development
Free trial Ready to get started?
Free trial

Related articles

Explore more
SDKTUTORIALSWebPDF.jsJavaScriptNutrient Web SDK

PDF.js vs. Nutrient Web SDK: A comprehensive PDF viewer comparison

SDKDEVELOPMENTDoc ViewerPDFDOCXWebODFPDF.jsDevelopment

Top 5 document viewers for developers

SDKDEVELOPMENTJavaScriptPDF GenerationTipsPDF.jsPDF-libPDFKitjsPDFpdfmakePuppeteerDevelopment

Top JavaScript PDF libraries for PDF generation and manipulation

Company
About
Security
Team
Careers
We're hiring
Partners
Legal
Products
SDK
Low-Code
Workflow
DWS API
resources
Blog
Events
Customer Stories
Tutorials
News
connect
Contact
LinkedIn
YouTube
Discord
X
Facebook
Popular
Java PDF Library
Tag Text
PDF SDK Viewer
Tag Text
React Native PDF SDK
Tag Text
PDF SDK
Tag Text
iOS PDF Viewer
Tag Text
PDF Viewer SDK/Library
Tag Text
PDF Generation
Tag Text
SDK
Web
Tag Text
Mobile/VR
Tag Text
Server
Tag Text
Use Cases
Tag Text
Industries
Tag Text
Resources
Blog
Tag Text
Events
Customer Stories
Tag Text
Tutorials
Tag Text
Features List
Tag Text
Compare
Tag Text
community
Free Trial
Tag Text
Documentation
Tag Text
Nutrient Portal
Tag Text
Contact Support
Tag Text
Company
About
Tag Text
Security
Tag Text
Careers
Tag Text
Legal
Tag Text
Pricing
Tag Text
Partners
Tag Text
connect
Contact
Tag Text
LinkedIn
Tag Text
YouTube
Tag Text
Discord
Tag Text
X
Tag Text
Facebook
Tag Text
low-code
Document Converter
Tag Text
Document Editor
Tag Text
Document Automation Server
Tag Text
Document Searchability
Tag Text
Use Cases
Tag Text
Industries
Tag Text
Resources
Blog
Tag Text
Events
Customer Stories
Tag Text
Support
Help Center
Tag Text
Contact Support
Tag Text
Log In
Tag Text
Company
About
Tag Text
Careers
Tag Text
Security
Tag Text
Legal
Tag Text
Pricing
Tag Text
Partners
Tag Text
connect
Contact
Tag Text
LinkedIn
Tag Text
YouTube
Tag Text
Discord
Tag Text
X
Tag Text
Facebook
Tag Text
Popular
Approvals matrix
Tag Text
BPMS
Tag Text
Budgeting process
Tag Text
CapEx approval
Tag Text
CapEx automation
Tag Text
Document approval
Tag Text
Task automation
Tag Text
workflow
Overview
Tag Text
Services
Tag Text
Industries
Tag Text
Departments
Tag Text
Resources
Blog
Tag Text
Events
Customer Stories
Tag Text
Support
Help Center
Tag Text
FAQ
Tag Text
Troubleshooting
Tag Text
Contact Support
Tag Text
Company
About
Tag Text
Careers
Tag Text
Security
Tag Text
Legal
Tag Text
Pricing
Tag Text
Partners
Tag Text
connect
Contact
Tag Text
LinkedIn
Tag Text
YouTube
Tag Text
Discord
Tag Text
X
Tag Text
Facebook
Tag Text
DWS api
PDF Generator
Tag Text
Editor
Tag Text
Converter API
Tag Text
Watermark
Tag Text
OCR
Tag Text
Table Extraction
Tag Text
Resources
Log in
Tag Text
Help Center
Tag Text
Support
Tag Text
Blog
Tag Text
Company
About
Tag Text
Careers
Tag Text
Security
Tag Text
Pricing
Tag Text
Legal
Privacy
Tag Text
Terms
Tag Text
connect
Contact
Tag Text
X
Tag Text
YouTube
Tag Text
Discord
Tag Text
LinkedIn
Tag Text
Facebook
Tag Text

Copyright 2025 Nutrient. All rights reserved.

Thank you for subscribing to our newsletter!

We’re thrilled to have you join our community. You’re now one step closer to receiving the latest updates, exclusive content, and special offers directly in your inbox.

This builtin is not currently supported: DOM

PSPDFKit is now Nutrient. We've consolidated our group of trusted companies into one unified brand: Nutrient. Learn more

This builtin is not currently supported: DOM

PSPDFKit is now Nutrient. We've consolidated our group of trusted companies into one unified brand: Nutrient. Learn more

This builtin is not currently supported: DOM

New Feature Release. Tap into revolutionary AI technology to instantly complete tasks, analyze text, and redact key information across your documents. Learn More or View Showcase

This builtin is not currently supported: DOM

Aquaforest and Muhimbi are now Nutrient. We've consolidated our group of trusted companies into one unified brand: Nutrient. Learn more

This builtin is not currently supported: DOM

Integrify is now Nutrient. We've consolidated our group of trusted companies into one unified brand: Nutrient. Learn more

This builtin is not currently supported: DOM

Join us on April 15th. Join industry leaders, product experts, and fellow professionals at our exclusive user conference. Register for conference