The printing permission allows a Chrome App to access the printing functionality.
Note: This permission is primarily for Chrome Apps, which are a deprecated technology. While a similar chrome.printing API exists for extensions on ChromeOS (especially for managed environments), this permission is most commonly associated with the legacy App platform.
What it does (for Chrome Apps)
- Grants access to the
chrome.printingAPI. - Allows a kiosk app, for example, to get a list of available printers and submit a print job to them without showing the standard print preview dialog to the user.
Modern Alternative for Extensions
For regular Chrome Extensions, there is no general-purpose printing permission that allows you to silently print. The standard way to print is to call window.print(), which will always open the browser's print preview dialog for the user to confirm.
On ChromeOS, a more powerful chrome.printing API is available for extensions in managed enterprise and education environments, allowing them to submit print jobs on behalf of the user to CUPS printers. The companion printingMetrics permission is independent and only needed if you also want to query print job history.
Manifest Declaration (For ChromeOS Extensions)
{
"name": "My ChromeOS Printing Extension",
"version": "1.0",
"manifest_version": 3,
"permissions": [
"printing"
]
}Security & Privacy
Why is it risky?
This is a specialized permission, mainly for older Chrome Apps or for managed work/school devices on ChromeOS. It allows an extension to submit print jobs, sometimes without showing you the usual print preview screen.
This is risky because the extension can see the full content of the document being printed. A malicious extension could steal sensitive information from your documents. For regular users on Windows, Mac, or Linux, this permission is not typically used by modern extensions.
API Usage Example (ChromeOS Printing API)
// background.js (on ChromeOS)
async function submitPrintJob() {
try {
const printers = await chrome.printing.getPrinters();
if (printers.length === 0) {
console.log('No printers found.');
return;
}
const targetPrinter = printers[0];
const documentBlob = await fetch('path/to/document.pdf').then(r => r.blob());
const jobId = await chrome.printing.submitJob({
job: {
printerId: targetPrinter.id,
title: 'My Document',
ticket: {
contentType: 'application/pdf',
color: 'BLACK_AND_WHITE',
duplex: 'NO_DUPLEX',
},
document: documentBlob
}
});
console.log(`Print job submitted with ID: ${jobId}`);
} catch (error) {
console.error('Failed to submit print job:', error);
}
}Extensions with the printing permission
Here are some popular browser extensions that use the "printing" permission. To explore more, try our Advanced search.