Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including scanner-js with all npm packages installed. Try it out:

var scannerJs = require("scanner-js")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

scanner-js v2.10.3

ScannerJS: JavaScript web scan JPG PDF images from TWAIN WIA scanners in browser (Chrome, Edge, Firefox or IE)

ScannerJS: JavaScript Web Twain Scanner Access from Browsers (Chrome, Edge, Firefox, IE)

Scanner.js enables HTML JavaScript scanning in web browsers (Chrome, Edge, Firefox, IE). Scan documents from TWAIN WIA scanners in browsers and upload to the server side, which can be written in any script (Java, C# VB ASP.NET, PHP, Python, Ruby). JPEG, PDF, TIFF are supported.

function scanToWebPageAndUpload() {
  scanner.scan(displayImagesOnPage, {
    "twain_cap_setting" : {
        "ICAP_PIXELTYPE" : "TWPT_RGB", // Color
    "output_settings" : [
        { "type" : "return-base64", "format" : "jpg"} // return images to web page
        { "type": "upload", "format": "pdf", // upload as PDF
            "upload_target": { 
                "url": ""


bower install scanner


  • Cross-Browser Support: Chrome, Edge, Firefox and IE
  • Integrate To Pages Within An Hour
  • Fast Flatbed And ADF Scanning
  • Generates Thumbnails & Upload To Web Servers Directly
  • Multiple output formats: JPG, PDF, PDF/A, TIFF, CCITT G4
  • Barcode Reading & Blank Page Detection
  • Cloud Ready; Easy Deployment

Docs & Community

Quick Start

Install Scanner.js:

bower install scanner

Include scanner.js into your page:

<script src="bower_components/scanner/dist/scanner.js"></script>

You may then start to call Scanner.js functions:

<button type="button" onclick="scan();">Scan</button> <!-- Triggers scan -->   
<div id="images"/> <!-- Displays scanned images  -->

<script type="text/javascript" >
// Need to upload scanned images to server or save them on hard disk? Please refer to the dev guide:
// For more scanning code samples, please visit

var scanRequest = {
    "use_asprise_dialog": true, // Whether to use Asprise Scanning Dialog
    "show_scanner_ui": false, // Whether scanner UI should be shown
    "twain_cap_setting": { // Optional scanning settings
        "ICAP_PIXELTYPE": "TWPT_RGB" // Color
    "output_settings": [{
        "type": "return-base64",
        "format": "jpg"

/** Triggers the scan */
function scan() {
    scanner.scan(displayImagesOnPage, scanRequest);

/** Processes the scan result */
function displayImagesOnPage(successful, mesg, response) {
    if (!successful) { // On error
        console.error('Failed: ' + mesg);
    if (successful && mesg != null && mesg.toLowerCase().indexOf('user cancel') >= 0) { // User cancelled.'User cancelled');
    var scannedImages = scanner.getScannedImages(response, true, false); // returns an array of ScannedImage
    for (var i = 0;
        (scannedImages instanceof Array) && i < scannedImages.length; i++) {
        var scannedImage = scannedImages[i];
        var elementImg = scanner.createDomElementFromModel({
            'name': 'img',
            'attributes': {
                'class': 'scanned',
                'src': scannedImage.src
        (document.getElementById('images') ? document.getElementById('images') : document.body).appendChild(elementImg);

Developer's Guide to ScannerJs | Sample code on Github

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free