Skip to content
Enables zooming and panning an image or canvas, both mobile and desktop. Min and max zoom settings. Animated transitions.
JavaScript CSS
Branch: master
Clone or download
bradstiff Merge pull request #10 from enekesabel/master
getDimensions updated to use offsetWidth and offsetHeight
Latest commit 18066e0 Apr 8, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples/src No initialTop/Left with position:center Mar 22, 2019
.gitignore Add .vscode to .gitignore Feb 6, 2019
LICENSE Update license Feb 16, 2019 Update Feb 10, 2019
webpack.config.js Prevent pull down refresh with overscroll-behavior vs cancel touchMove Feb 2, 2019


A React component that adds pinch-zoom and pan capability to an img element. Both mobile and desktop browsers are supported. In desktop mode, you zoom with the mouse scrollwheel, and pan by dragging.

On render, the zoom and pan values are applied using CSS transforms.


npm install react-responsive-pinch-zoom-pan --save

Try it out




  1. git clone
  2. cd react-responsive-pinch-zoom-pan
  3. npm install
  4. npm start
  5. Browse to http://localhost:3001


import React from "react";
import PinchZoomPan from "react-responsive-pinch-zoom-pan";

const App = () => {
    return (
        <div style={{ width: '500px', height: '500px' }}>
                <img alt='Test Image' src='' />


Prop Type Default Description
initialScale number 'auto' The initial scale of the image. When auto, the image will be proportionally 'autofit' to the container.
minScale number 'auto' The minimum scale to which the image can be zoomed out. When auto, the minimum scale is the 'autofit' scale.
maxScale number 1 The maximum scale to which the image can be zoomed in.
position 'center' or 'topLeft' 'topLeft' Position of the image relative to the container. Applies when the scaled image is smaller than the container.
zoomButtons bool true Render plus (+) and minus (-) buttons on top of the image as another way to access the zoom feature.
doubleTapBehavior 'reset' or 'zoom' 'reset' Whether to zoom in or reset to initial scale on double-click / double-tap.


You're welcome to contribute to react-responsive-pinch-zoom-pan.

To set up the project:

  1. Fork and clone the repository
  2. npm install
  3. npm start

The example page will be available on http://localhost:3001 in watch mode, meaning you don't have to refresh the page to see your changes.

You can’t perform that action at this time.