Image formats How to convert PDF to JPG with Python Raster vs Vector: Navigating the Digital Image Landscape What Is a PNG Image and How to Convert It? Comprehensive Guide on Converting PDF to JPG on Android Converting PDF to JPG Using Java Ways to Convert WebP to PNG Converting JPG to GIF: Creating Aesthetically Beautiful Website Pages How to Convert MP4 to PNG to Enhance Accessibility and Unmatched Quality Convert PNG to SVG PDF to TIFF Made Easy: Top Tools and Techniques SVG Format: Features, Common Uses, and Pros/Cons You Should Know Convert Image to PDF – All the Options Complete Guide On Converting TIFF To JPG Converting Images From AVIF To JPG Converting Images From TIFF To PNG Everything You Need To Know About AVIF To PNG Conversion Everything You Need To Know About WebP To SVG Conversion How to Convert Images From WebM To PNG A Developer’s Guide to SVG Optimization The Developer’s Guide to PNG Formats: Maximizing Impact with PNG-8 and PNG-24 Understanding PSD: Complete Guide How to Convert WebP to JPG: A Comprehensive Guide How to Convert HEIC to JPG: A Comprehensive Guide Should You Still Use BMP Format? Use Cases and Pros/Cons MXF Format: Key Features, Use Cases and Pros/Cons Indesign Format: Features, Pros/Cons and Best Practices HEIF Format: Meet the The Next Evolution of JPEG glTF: Features, Applications, and 5 Essential Best Practices ICO Format: Origins, Common Uses, and Important Pros/Cons GLB Format: How It Works, Use Cases, and Pros/Cons You Should Know DNG Format: How It Works and Pros/Cons to Know About EPS Format: History, How it Works, and Pros/Cons You Should Know SVG Format: Features, Common Uses, and Pros/Cons You Should Know EPS vs SVG: 4 Key Differences and How to Choose AVIF vs. WebP: 4 Key Differences and How to Choose DNG vs RAW: Pros, Cons, Key Differences, and How to Choose AVIF Format: A Next-Gen Image Format to Rule them All? The TGA Format Is Alive and Kicking: Why and When to Use It USDZ Format: How It Works, Use Cases, and Pros/Cons BMP vs PNG: 4 Key Differences and How to Choose HEIF vs JPEG: 4 Key Differences and How to Choose SVG vs PNG: 4 Key Differences and How to Choose Automatically Change Format To JPG How to Convert PNG to JPG? All the Options Converting PNG to TIF: Options and Best Practices Convert JPG to TIFF WebP Format: Technology, Pros & Cons, and Alternatives GIF Format: Past, Present, and Future

Convert JPG to TIFF


There are many different file types available for images, each with its pros and cons. While the most common ones – JPEG and PNG, to name a few – dominate the world today, others have specific uses.

One of these file formats in particular, the Tag Image File Format (or TIFF for short), is used widely by graphic designers, photographers, and print industry professionals. It offers lossless images without any compression and can also operate as a container for multiple smaller JPEGs. And Cloudinary’s platform provides a powerful way to convert your pictures to and from any file format.

In this tutorial, we’ll create a simple script that takes an image from us and converts it to a TIFF file through the Cloudinary platform.

Creating Our Application

We’ll be using Node for this project, so you should have some basic familiarity. The goal of this app is to be a simple process that can take a JPG image and convert it to a TIFF through Cloudinary’s Programmable Media platform. If you don’t already have a Cloudinary account, you can sign up for free.

First, we need to create a “jpg-to-tiff” folder and initialize npm to generate a package.json file.


Then, we’re going to install the required packages by running the following line of code:

npm i express cloudinary morgan dotenv express-formidable-v2 

The packages installed using this line of code include:

  • ExpressJs: A minimalist NodeJS framework for building RESTful APIs.
  • Cloudinary: This allows easy integration with the Cloudinary platform.
  • Express-formidable-v2: A NodeJS middleware for handling multipart/form-data (files like images and videos).
  • Morgan: A NodeJS middleware used to log HTTP requests.
  • Dotenv: Used to load environment variables from an .env file.

We also suggest you download and use nodemon, for ease of use with Node. While it is not required, having it while still working on the backend is nice, so the server restarts automatically when changes are made.

After we have our dependencies, we’ll create an index.js file and insert the following code:

const express = require("express");
const morgan = require("morgan");
const app = express();
const PORT = process.env.PORT || 4000;
app.get("/", (req, res) => {
  res.send("Cloudinary Video Overlay Tutorial ");
app.listen(PORT, () => {
  console.log(`Server listening on port ${PORT}`);

If you installed nodemon as a dev dependency, you’ll need to add this line of code to the “scripts” section in package.json:

"dev": "nodemon index.js"  

Now, we run the application. If you installed nodemon, use their command to start your server. Otherwise, use:

npm run dev  

Setting Up Cloudinary

After that’s all done, we’ll need to integrate Cloudinary. If you don’t have an account, you can sign up for a free one to start. Then, log in and retrieve your Cloudinary cloud name, API key, and API secret from the dashboard:

You’ll also need to create an .env file in the root folder and store the credentials as environmental variables. Then, create a “cloudinary.js” file with the following code:

const cloudinary = require(“cloudinary”).v2;

  cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
  api_key: process.env.CLOUDINARY_API_KEY,
  api_secret: process.env.CLOUDINARY_API_SECRET,
  secure: true,

After that’s set up, we’ll need to upload a picture to Cloudinary. For this tutorial, we’ll use a picture from

In “cloudinary.js” in “config”, insert this code to upload the picture:

const cloudinaryImageUpload = (file) => {
  return new Promise((resolve, reject) => {
      .then((result) => {
      .catch((error) => {

This is the code to convert jpg to tiff image format:

const pictureTransform = (img) => cloudinary.image(img, { format: "tiff" }); 

Then, create an UploadController.js file in “controllers” to retrieve the picture. This code will upload the picture to Cloudinary, and then convert it through their platform:

const pictureUpload = async (req, res) => {
  if (req.files !== undefined) {
    try {
      const pic = await cloudinaryImageUpload(req.files.picture.path);
      const transformedImage = pictureTransform(pic);
        sucess: true,
        picture: transformedImage,
    } catch (error) {
        sucess: false,
  } else {
      sucess: false,
      error: "No image was uploaded",

Here’s what happens: we grab the path of the parsed image and upload it to Cloudinary using the “cloudinaryImageUpload” function in the “cloudinary.js” file. Then, the function returns the Public ID of the image, which is then sent to “pictureTransform” which changes the image to a .tiff.

You can use Postman to send a request to the server and make sure it’s working. A request is sent to the “upload” route with the picture attached.

Afterwhile, you should get a “200” response and the link to the .tiff image included:

The Wrap-Up

Hopefully, this little tutorial gave you a good idea of how to use the Cloudinary platform to convert your images. With a little more elbow grease, you can easily set this app up to scale with a ton of images, so you can convert to your hearts content.

See what else Cloudinary can do for you and your teams. Sign up for free and take advantage of our Media Experience Cloud to kickstart your business’s visuals. Sign up today.

Last updated: Nov 22, 2023