ppi – How do I generate high quality prints with an ink jet printer?

Making effective use of professional photographic ink jet printers is tricky business, especially when the statistics that are commonly used to describe these printers are vague and misleading. Learning how a ink jet printers function, how to properly interpret their capabilities, and make the most effective use of those capabilities, is possible. You may need to deal with a little mathematics to fully understand, but for those brave enough to endure, your answers are below.


In the printing world, there are numerous terms used to describe the various aspects of a printers behavior. Everyone has heard of DPI, many of you have heard of PPI, but not everyone understands the true meaning of these terms and how they relate.

  • Pixel: Smallest unit of an image.
  • Dot: Smallest element of a print generated by a printer.
  • DPI: Dots per Inch
  • PPI: Pixels per Inch

Understanding terms is important, but everything has context, and understanding how these terms relate to each other in the context of ink jet printing is critical to learning how to generate the best quality prints. Every image is composed of pixels, and every pixel in an image represents a single distinct color. The color of a pixel may be produced in a variety of ways, from the blending of RGB light on a computer screen, to a solid mixture of dye in a dye sublimation printer, to the dithered composition of colored dots printed by an ink jet printer. The latter is of interest here.

PPI to DPI Relationship

When an ink jet printer renders an image, it has a limited set of colors to work from, usually cyan, magenta, yellow, and black. Higher-end printers may include a variety of other colors as well, such as blue, orange, red, green, and various shades of gray. To produce the wide range of colors expected of a photo printer, multiple dots of each color must be combined to create a single color as represented by a pixel. A dot may be smaller than a pixel, but should never be larger. The maximum number of dots that an ink jet printer may lay down in a single inch is the measurement of DPI. Since multiple printer dots must be used to represent a single pixel, the PPI of a printer will never be as high as the printers maximum DPI.

The Human Eye

Before diving into the details of how to achieve maximum print quality, it is important to understand how the human eye sees a print. The eye is an amazing device, and as photographers, we know that better than most. It can see amazing clarity and dynamic range. It also has a limit on its ability to resolve detail, and that directly affects what resolution you may choose to print at.

Resolving Power

The maximum resolving power of the human eye is lower than printer manufacturers would have you believe, which tends to be 720ppi or 600ppi, depending on the manufacturer. It is also lower than most print fanatics would have you believe, as well. Depending on the intended viewing distance, the lowest acceptable PPI may be considerably lower than you might expect. The most general way to describe the resolving power of the human eye is as one arcminute, or 1/60th of a degree, at any distance (for the average eye…those with 20/10 vision see about 30% better, or 1/86th of a degree acuity.) For normal vision, we can use this to approximate the minimum resolvable size of a pixel at a given distance, so assuming a hand-held viewing distance of about 10 inches for a 4×6 inch print:

(tan(A) = opposite / adjacent )

tan(arcminute) = size_of_pixel / distance_to_image
tan(arcminute) * distance_to_image = size_of_pixel
tan(1/60) * 10″ = 0.0029″ min pixel size

For sanity sake, we can make the tangent of arcminute, or resolving power P, a constant:

P = tan(arcminute) = tan(1/60) = 0.00029

This may be translated into pixels per inch like so:

1″ / 0.0029″ = 343.77 ppi

The minimum resolvable pixel size may be calculated for any distance, and as distance increases, the minimum required PPI will shrink. If we assume an 8×10 print at a viewing distance of around a foot and a half, we would have the following:

1″ / (0.00029 * 18″) = 191.5 ppi

A general formula for this can be created, where D is the viewing distance:

1/(P*D) = PPI

As a simple rule, regardless of how close you may view a photograph, the unaided 20/20 eye is incapable of resolving more than about 500ppi (for those with 20/10 vision, resolving power reaches about 650ppi.) The only reason one may surpass a resolution of 500ppi is when you require more than a standard 300-360ppi, and you need to stay within the limitations of your hardware (i.e. 600ppi for Canon printers.)

Resolving Power for 20/10 Vision

While the very vast majority of the time, you will not need more than 300-360ppi, if you do have very fine detail that requires a high PPI, you may wish to base your calculations on a higher visual acuity. For viewers with 20/10 vision, visual acuity is a bit improved, at around 1/86th of a degree (0.7 arcminute). The constant P at this level of acuity is smaller, and therefor necessitates a smaller pixel when printing images with very fine detail.

Given our formula from before, adjusted for improved acuity:

P = tan(arcminute) = tan(1/86) = 0.00020

Taking our 4×6″ print viewed at 10″, and plugging this into our general formula for PPI, we would have a PPI of:

1″ / (0.0002 * 10″) = 1″ / 0.002″ = 500 ppi

Ok, enough math for now. On to the good stuff.

Print Resolution

Now that we know the limits of the human eye, we can better determine what resolution to print at for a given paper size and viewing distance. An ink jet printer is not capable of producing ideal results at any PPI, so we must compromise, and choose a resolution that is more appropriate to the hardware. Anyone who has investigated the “best” resolution to print at has likely come across many common terms, such as 240ppi, 300ppi, 360ppi, 720ppi, etc. These numbers are often based in truth, but when to use them, and when you might actually choose a lower resolution, is often left unexplained.

When choosing a resolution to print at, you must make sure it is divisible into the lower bound of the DPI your printer is capable of. In the case of an Epson, this is likely 1440, and in the case of a Canon it is likely to be 2400. Every printer has a native internal pixel resolution that any image printed will be resampled to. In the case of Epson, this is usually 720ppi, and in the case of Canon it is usually 600ppi. The PPI of printers is rarely publicized by the respective manufacturers, so it is up to you to figure it out. A handy little tool called PrD, or Printer Data, can help. Just run, and your printers native PPI will be displayed.

Optimal Resolution

Determining the optimal resolution to print at, now that we have both the printers DPI and native PPI, should be a trivial task: use the native PPI. While this seems logical, there are many reasons why this is less than idea. For one, 720ppi is well beyond the maximum resolving power of the human eye (@500ppi). Using the maximum resolution is also likely to use more ink (wasting money), while also reducing your tonal range. More on tonal range in a bit.

If we assume a minimum viewing distance of approximately six inches for a 4×6 print, the theoretical PPI would be about 575ppi. This rounds up to a printer-native 600ppi on Canon, and 720ppi on Epson. A viewing distance of six inches for a person with 20/20 vision (corrected or otherwise) is extremely close, and rather unlikely. If we assume a more realistic minimum viewing distance of ten inches, our theoretical PPI drops to about 350.

If we printed our 4×6 photo at a resolution of 350ppi, the results would likely be less than stellar. For one, 350 is not evenly divisible into either 600 or 720, which will cause the printer driver to do some rather unsightly, distorted scaling for us. Any regular, repeating patterns will show up with very undesirable moiré, which can greatly reduce the quality of a print. Choosing a resolution that evenly divides into the native printer resolution, such as 360ppi for Epson, or 300ppi for Canon, will help ensure that any scaling the driver does will produce even results.

Here are some common print resolutions for various DPI’s:

  1200 | 1440 | 2400  
       |      | 1200*  
   600 |  720 |  600  
   400 |  480 |  400  
   300 |  360 |  300  
   240 |  288 |  240  
   200 |  240 |  200  
   150 |  180 |  150  

* Highly unlikely to ever be needed or used.

Tonal Range

Despite all the knowledge we now have, knowing the native resolution of a printer is not really enough to choose an appropriate PPI. There is another issue that should be addressed first, and that is one of tonal range. The process of generating a photograph from a vision is one of continual reduction in color range and contrast. The human eye is capable of considerable dynamic range, however the camera is capable of considerably less. Printers are capable of still less, so making the most effective use of your printer’s capabilities is key to producing a high quality, professional print.

The tonal range that may be reproducible by a printer is ultimately determined by the cell size of a pixel. If we take the ever present Epson printer, with its 1440 DPI, we can determine the number of dots per pixel with a simple formula:

(DPI / PPI) * 2 = DPP

If we assume the native resolution, our Epson printer can produce 4 dots per pixel:

(1440/720)*2) = 4

These four dots must produce a square pixel, so in actuality the dots per pixel are arrayed in a 2×2 cell. If we half our ppi, and use 360 instead, we get a 4×4 cell, and at 288ppi we get a 5×5 cell. This simple fact is directly responsible for the ultimate tonal range a printer is capable of, as the number of dots at 720ppi is 1:4 what it is at 360ppi, and 1:6.25 what it is at 288ppi. As we reduce our PPI, we increase the number of colors that may be represented at each individual pixel. At 180ppi, we have theoretically eight times as much tonal range as we do at 720ppi.

If we update our common print resolutions table with cell sizes, we have the following (note, 2400dpi has been normalized with 1200dpi):

      | 1200 | 1440 | 2400  
  2x2 |  600 |  720 |  600  
  3x3 |  400 |  480 |  400  
  4x4 |  300 |  360 |  300  
  5x5 |  240 |  288 |  240  
  6x6 |  200 |  240 |  200  
  8x8 |  150 |  180 |  150  

A 7×7 cell is not evenly divisible, and has been excluded. Given the chart above, it should become clearer why, despite lowering the PPI from say 720 to 360, a print can still look superb. For a close viewing distance of eight inches, we are within the limit of resolving power, and we gain tonal range. Dropping even farther to 288ppi will likely increase tonal range more, without any tangible visible detriment to the vast majority of viewers. The added tonal range at a close viewing distance, however, will likely improve the overall quality of the print for the same majority of users, as the human eye is capable of detecting many millions of colors over an extremely broad range of tones.

Theoretical vs. Actual

Quite often we run into the issue of the theoretical vs. the actual, and usually the actual is less appealing than the theoretical. In the case of Ink Jet printers, the theoretical may actually represent less than the actual capabilities of a printer. In particular, the actual achievable tonal range is often higher than is theoretically derivable via the above formula due to the differences in horizontal vs. vertical DPI. To determine the resolution of a print, you must base your calculations on the lower DPI bound. In the case of a 2880×1440 Epson, this lower bound is 1440. However, because the horizontal DPI is twice as much, you effectively get twice as many dots.

This results in the desirable effect of increasing the possible tonal range at any given resolution. Since our Epson printer has 2880 pixels in the horizontal, at 720ppi we actually have a cell that is 4×2. At 360ppi we have a cell that is 8×4, and at 288ppi we have a cell that is 10×5. Assuming 8 different ink colors, that comes out to a theoretical 401 (400 + 1 extra for pure white…or the absence of ink) possible tones at 288ppi, which is more than enough to produce a tremendously wide range of color. Canon PIXMA Pro printers technically offer even greater range, as their vertical resolution is 2400 rather than 1440, and the horizontal resolution is 4800 rather than 2880. At 240dpi you get a 20×10 size pixel cell, with 9 inks you have 1801 possible tones. A Canon at 300ppi, you have the same tonal range as an Epson at 288ppi. Despite having a lower maximum PPI of 600, Canon printers should produce better tonal range at any given pixel size.

The picture is even more complex, however, as modern professional-grade ink jet printers use not only a variety of ink colors, they also use varying ink droplet sizes. Assuming three different drop sizes (common for Epson and and Canon), theoretically that increases the range of tones to 1203. The realistic effect of varying droplet size is more even tonal grades, rather than considerably more tonal range, however the end result is basically the same: better looking images.

Tonal grading can also be addressed using additional colors – eg CcMmYK which uses Light Magenta and Light Cyan; or even a true Black. Tonal grading also has an impact on image resolution since dot spacing is used to create lighter tones where lighter inks are not available.

Beyond all of this theory there are physical and practical limitations that, once again, take away all the gains our theory has given us. The maximum tonal range that may be achievable is dependent on more than just ink picoliters and mathematics. Paper is a critical factor in determining tonal range, and papers range from soft and warm to stunning bright, from glossy to matte, from smooth to rough. Choosing a paper, however, is a discussion for another day.

Knowledge is power, as they say, or in the case of photography, knowledge is a better vision envisioned. Despite all the rhetoric about printers on the internet, both from manufacturers and avid consumers, a little math and some logic can provide some useful knowledge. If you take anything away from reading this far today, I hope its that resolution is not the most important factor when it comes to creating a stunning print. Viewing distance and tonal range are just as important, if not more important.

As a general rule of thumb, 240-360ppi for your average professional grade ink jet printer will be sufficient for the vast majority of prints viewed within a couple feet. Larger prints framed and hung, viewed at a distance of several feet could do with 200-240ppi. Giant prints viewed at more than a few feet, such as wrapped canvas, can easily do with the bare minimum of 150-180ppi. Using the proper resolution has the benefit of improving tonal range, and will likely reduce your overall ink usage as well.

Is there a print on demand service like Threadless but for fine art prints?

I like whitewall or bayphoto quality but i’m wondering if there is a way where I don’t need to take care of the process of ordering from them and ship to the final customer but do all it one step by just uploading the image and create my own store

prints – Is a classic analogue printed film photo CMYK?

I’m assuming such as standard analogue Kodak negative film printed to appropriate Kodak paper. Is this anything like CMYK or is it something entirely different?
Is the gamut similar to CMYK even if the process is arrived at from a different direction?

Side question: Does this also apply to slides, positives?

My google-fu has failed me on this, as everything I find relates to ‘modern’ printing from digital to inkjet, giclée, laser etc, so any search I try is buried in modern structures.

php – Plesk hosted website prints 503 error every few requests

On my Debian Plesk Server I am hosting a domain and two sub domains. Everything was working perfectly for the last months without any code changes. Today I noticed that every few requests (klick of a button, navigation to another page,…) error 503 appeared and disappeared with another refresh.

I tested it with two simple php files that are connected with an tag. The result was that every 3rd to 5th klick error 503 appeared. However, the same test works perfectly without any errors on the main domain.

Just to be sure, I created another subdomain and tested the two linked php files and it showed error 503 like the other subdomains after some requests.

Is it possible that the last Plesk update trashed the php config of the sub domains? Is there any chance to fix that issue?

scanning – Why is there heavy dust and scratches only on the darker part of scanned color prints?

I was scanning my color prints and while postprocessing them, after descreen, I had noticed a trend that there were always a lot of dust and scratches on the darker part of the image, while the brighter areas didn’t have any problem. I’m not sure what they are, I’m guessing dust or paper texture/scratches? Why is that? Is there something wrong with my scanner?

bitcoind – Is there a script for bitcoin core which prints all spendable UTXOs given a private seed?

You can import a descriptor composed of the xpriv(s) (or xpub(s) if you just want to watch the coins) to the bitcoind wallet, and then rescan the block chain for transactions involving derived key up to a configured gap limit.

For importing the descriptor, use the importmulti RPC call in versions <0.21 and the importdescriptors RPC as of 0.21 (upcoming).

Both calls allow you to pass a creation timestamp in order to rescan the block chain from this point. You can otherwise manually call rescanblockchain.
Note that, depending on the number of blocks you are scanning, it will take some time. You can monitor the progress in your debug.log.

prints – A poster with 300 faces

Well, without knowing what software tool you want to use, it’s a bit difficult to provide an exact answer. Here is the pseudocode way I’d do it. Matlab, for one, could assemble the image, tho’ it’s hardly the best or fastest tool.

Let’s pretend you’ve loaded the 300 names into an array of character strings, and have initialized a graphics frame. Then,

for j = 1:15
   for k = 1:20
      place_image(image(k + (k-1)*j)) AT location(x=j, y = k)
      write(name_array(k + (k-1)*j)) AT title_location(x=j, y = k)

Here, you’d have preset the location increment from (j,k) to (j,k+1) as one image size, and preset title_location with respect to the current image area.

How to physically flatten old prints?

I’m trying to digitize a stack of old, small, but very much curled photo prints on a flatbed scanner. I find it hard to keep them straight while closing the lid and pressing them down onto the glass, so in most cases I need to straighten the images in software afterwards. Is there some magic trick to avoid that extra step?

Alternatively: is there a way to ‘uncurl’ those prints, perhaps by soaking them in a water bath and then have them dry pressed between pieces of cloth? The prints do not necessarily have to be preserved after scanning.

prints – Is there a trick to separate an old photo moisture-fused to glass?

I agree with dpollitt, the parts of the photo stuck to the glass are most likely damaged beyond salvage. Although I’ve seen miracles come from someone who is well skilled in Photoshop!

That said, to separate the two from each other, I would first try using PEC-12 Photo Emulsion Cleaner.

You may also want to try and immersing the whole lot in a pan of distilled water. Using distilled water to prevent any damage from dissolved minerals. This may re-hydrate the stuck parts, and, as long as the print is not water soluble ink, just dry it quickly after and wipe it down with something like PEC-12.

If that doesn’t work, as a last resort, I can only suggest using regular lighter fluid. I learned this trick from being a photo Grip for a catalog shop many years ago and would use lighter fluid to clean things like tape residue from all sorts of really expensive pieces of furniture and glass. I’ve also used it very successfully on other things like plastics and porcelain. All without any damage to anything.

If I had to guess, the slippery properties, and lighter fluid’s ability to loosen things adhered to others come from it being petroleum based. But as mentioned, I would only do this as a last resort as I’ve never before applied it to a photograph.

service recommendation – What’s the easiest way to create passport-sized prints?

You should be able to use any photo or printing program to print several on the same page. Windows printing will do this as well. If you’re on a Mac, you should be able to use Preview to print several JPEGs opened in the same window. Just make sure that scaling and anything other size related settings are set so that your images print at the size they should be.

As for the size, 35x45mm is 413×531 pixels at 300DPI. You may want to print them with a few mm of bleed.

If you really wanted to though, you could use Photoshop to just generate your own collage of passport photos on an A4 sized template.

Have the passports resized to 413x531px, create a new A4 image in Photoshop (or any image editing program you want to use) then drag or paste in the images and assemble them.