{"id":31756,"date":"2023-11-07T07:00:00","date_gmt":"2023-11-07T15:00:00","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=31756"},"modified":"2025-10-20T18:01:50","modified_gmt":"2025-10-21T01:01:50","slug":"uploading-images-node-js-cloudinary-node-sdk","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk","title":{"rendered":"Uploading Images in Node.js With the Cloudinary Node SDK"},"content":{"rendered":"\n<p>Managing your image and video workflow is crucial, and a significant aspect of it involves ensuring your media is properly organized in your Cloudinary media library.&nbsp;<\/p>\n\n\n\n<p>Node.js is a runtime environment that lets you run JavaScript on the server side, outside of the browser. A Node SDK (Software Development Kit) is a library built to run on Node.js, giving developers prebuilt functions to interact with specific services or APIs. For example, the Cloudinary Node SDK provides convenient methods to upload, transform, and manage images directly from your Node.js applications.<\/p>\n\n\n\n<p>In this article, we\u2019ll guide you on how to use Cloudinary in Node JS with the Node SDK for this purpose. We\u2019ll also cover the process of uploading single or multiple images using the Node SDK uploader. After going through this, you\u2019ll be well-equipped to seamlessly transfer your images and videos to the cloud.<\/p>\n\n\n\n<p>Watch this short explainer video, and then follow along in this article to get going on your own.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Uploading Images in Node.js with the Cloudinary Node SDK - Dev Hints\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/hGzVY88q8I0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Getting Started With the Cloudinary Image Upload Node JS Process<\/h2>\n\n\n\n<p>To get started with Cloudinary in your Node.js application, follow these steps:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Install the Cloudinary Node Module:<\/h3>\n\n\n\n<p>First, you need to install the Cloudinary Node module using either npm or yarn. This module will enable your Node.js application to interact with Cloudinary services.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\">npm install cloudinary\n<span class=\"hljs-comment\"># or<\/span>\nyarn add cloudinary<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">2. Import and Configure Cloudinary in Your Node.js Application:<\/h3>\n\n\n\n<p>Once you&#8217;ve installed the module, import it into your Node.js app. This allows your application to use Cloudinary&#8217;s functionalities.<\/p>\n\n\n\n<p>Then, connect your Node.js application to your Cloudinary account. You&#8217;ll need to configure it with your Cloud Name, API Key, and API Secret. You can find these credentials in your <a href=\"https:\/\/cloudinary.com\/users\/login\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary dashboard<\/a>.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-wrap-lines\"><span class=\"hljs-keyword\">const<\/span> cloudinary = <span class=\"hljs-keyword\">require<\/span>(<span class=\"hljs-string\">'cloudinary'<\/span>).v2;\n<span class=\"hljs-comment\"># or<\/span>\nimport { v2 <span class=\"hljs-keyword\">as<\/span> cloudinary } from <span class=\"hljs-string\">'cloudinary'<\/span> \n\ncloudinary.config({\n  cloud_name: <span class=\"hljs-string\">'your_cloud_name'<\/span>,\n  api_key: <span class=\"hljs-string\">'your_api_key'<\/span>,\n  api_secret: <span class=\"hljs-string\">'your_api_secret'<\/span>,\n});\n\n<span class=\"hljs-keyword\">const<\/span> image = <span class=\"hljs-string\">'.\/path\/to\/image.jpg'<\/span>; <span class=\"hljs-comment\">\/\/ This can also be a remote URL or a base64 DataURI<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Finally, specify the source of the image you wish to upload, as shown above.<\/p>\n\n\n<div class='c-callout  c-callout--inline-title c-callout--note'><strong class='c-callout__title'>Note:<\/strong> <p>This source can be either a local image file path, a remote URL, or a base64 DataURI, offering flexibility in how you provide the image for upload.<\/p>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">3. Upload Image to Cloudinary NodeJS<\/h3>\n\n\n\n<p>With Cloudinary configured in our application and the source of our image defined, we&#8217;re all set to upload the image to our media library. The code below allows us to achieve this seamlessly:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-keyword\">const<\/span> result = <span class=\"hljs-keyword\">await<\/span> cloudinary.uploader.upload(image);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The result will include information about the uploaded image, such as its URL, secure URL, public ID, and various metadata, depending on the Cloudinary configuration and the specific options used for the upload.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Multiple Images Upload<\/h3>\n\n\n\n<p>For uploading multiple images, you can employ a loop, typically a &#8220;for&#8221; loop, to process each image one by one. Here&#8217;s an example:<\/p>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-keyword\">const<\/span> image <span class=\"hljs-keyword\">of<\/span> images) {\n<span class=\"hljs-keyword\">const<\/span> result = <span class=\"hljs-keyword\">await<\/span> cloudinary.uploader.upload(image);\n<span class=\"hljs-built_in\">console<\/span>.log(<span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">code<\/span>&gt;<\/span>Successfully uploaded ${image}<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">code<\/span>&gt;<\/span><\/span>);\n<span class=\"hljs-built_in\">console<\/span>.log(<span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">code<\/span>&gt;<\/span>&gt; Result: ${result.secure_url}<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">code<\/span>&gt;<\/span><\/span>);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This looping process will use the uploader to upload your image. It allows you to efficiently manage and upload multiple images one at a time, ensuring each image is successfully uploaded before moving on to the next.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Uploading Various Formats Using Uploader<\/h2>\n\n\n\n<p>Looking at the <a href=\"https:\/\/cloudinary.com\/documentation\/image_upload_api_reference\" target=\"_blank\" rel=\"noreferrer noopener\">documentation<\/a>, the uploader has the capability of accepting formats aside from the local path. You can pass a base 64 data URI or even copy the image URL directly into the uploader. This functionality provides a quick and easy way to upload images that exist on other servers to your Cloudinary account.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>In a nutshell, to upload images to your Cloudinary account using the Node SDK, you just need to get the path or URL of your images and pass it to the uploader. It offers an incredibly easy way to move our local or online images into the Cloudinary cloud. Indeed, uploading images and videos to our Cloudinary account has never been simpler!<\/p>\n\n\n\n<p>If you found this article helpful and want to discuss it in more detail, head over to&nbsp;<a href=\"https:\/\/community.cloudinary.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary Community<\/a>&nbsp;forum and its associated&nbsp;<a href=\"https:\/\/discord.gg\/cloudinary\" target=\"_blank\" rel=\"noreferrer noopener\">Discord<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Managing your image and video workflow is crucial, and a significant aspect of it involves ensuring your media is properly organized in your Cloudinary media library.&nbsp; Node.js is a runtime environment that lets you run JavaScript on the server side, outside of the browser. A Node SDK (Software Development Kit) is a library built to [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":31758,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[25,383,263],"class_list":["post-31756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-asset-management","tag-nodejs","tag-sdk"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How to Use Cloudinary in Node.js for Image Uploads<\/title>\n<meta name=\"description\" content=\"Cloudinary image upload Node JS | Managing your image and video workflow is crucial, and a significant aspect of it involves ensuring your media is properly organized in your Cloudinary.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Uploading Images in Node.js With the Cloudinary Node SDK\" \/>\n<meta property=\"og:description\" content=\"Cloudinary image upload Node JS | Managing your image and video workflow is crucial, and a significant aspect of it involves ensuring your media is properly organized in your Cloudinary.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-07T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-21T01:01:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1698429759\/Blog-upload_nodejs\/Blog-upload_nodejs.jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"melindapham\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk\"},\"author\":{\"name\":\"melindapham\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\"},\"headline\":\"Uploading Images in Node.js With the Cloudinary Node SDK\",\"datePublished\":\"2023-11-07T15:00:00+00:00\",\"dateModified\":\"2025-10-21T01:01:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk\"},\"wordCount\":606,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1698429759\/Blog-upload_nodejs\/Blog-upload_nodejs.jpg?_i=AA\",\"keywords\":[\"Asset Management\",\"Node(JS)\",\"SDK\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2023\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk\",\"url\":\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk\",\"name\":\"How to Use Cloudinary in Node.js for Image Uploads\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1698429759\/Blog-upload_nodejs\/Blog-upload_nodejs.jpg?_i=AA\",\"datePublished\":\"2023-11-07T15:00:00+00:00\",\"dateModified\":\"2025-10-21T01:01:50+00:00\",\"description\":\"Cloudinary image upload Node JS | Managing your image and video workflow is crucial, and a significant aspect of it involves ensuring your media is properly organized in your Cloudinary.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1698429759\/Blog-upload_nodejs\/Blog-upload_nodejs.jpg?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1698429759\/Blog-upload_nodejs\/Blog-upload_nodejs.jpg?_i=AA\",\"width\":2000,\"height\":1100,\"caption\":\"Image showing graphic representation of upload image to cloudinary nodejs with screenshot of code denoting the backend process\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Uploading Images in Node.js With the Cloudinary Node SDK\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9\",\"name\":\"melindapham\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"caption\":\"melindapham\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Use Cloudinary in Node.js for Image Uploads","description":"Cloudinary image upload Node JS | Managing your image and video workflow is crucial, and a significant aspect of it involves ensuring your media is properly organized in your Cloudinary.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk","og_locale":"en_US","og_type":"article","og_title":"Uploading Images in Node.js With the Cloudinary Node SDK","og_description":"Cloudinary image upload Node JS | Managing your image and video workflow is crucial, and a significant aspect of it involves ensuring your media is properly organized in your Cloudinary.","og_url":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk","og_site_name":"Cloudinary Blog","article_published_time":"2023-11-07T15:00:00+00:00","article_modified_time":"2025-10-21T01:01:50+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1698429759\/Blog-upload_nodejs\/Blog-upload_nodejs.jpg?_i=AA","type":"image\/jpeg"}],"author":"melindapham","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk"},"author":{"name":"melindapham","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9"},"headline":"Uploading Images in Node.js With the Cloudinary Node SDK","datePublished":"2023-11-07T15:00:00+00:00","dateModified":"2025-10-21T01:01:50+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk"},"wordCount":606,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1698429759\/Blog-upload_nodejs\/Blog-upload_nodejs.jpg?_i=AA","keywords":["Asset Management","Node(JS)","SDK"],"inLanguage":"en-US","copyrightYear":"2023","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk","url":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk","name":"How to Use Cloudinary in Node.js for Image Uploads","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1698429759\/Blog-upload_nodejs\/Blog-upload_nodejs.jpg?_i=AA","datePublished":"2023-11-07T15:00:00+00:00","dateModified":"2025-10-21T01:01:50+00:00","description":"Cloudinary image upload Node JS | Managing your image and video workflow is crucial, and a significant aspect of it involves ensuring your media is properly organized in your Cloudinary.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1698429759\/Blog-upload_nodejs\/Blog-upload_nodejs.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1698429759\/Blog-upload_nodejs\/Blog-upload_nodejs.jpg?_i=AA","width":2000,"height":1100,"caption":"Image showing graphic representation of upload image to cloudinary nodejs with screenshot of code denoting the backend process"},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/uploading-images-node-js-cloudinary-node-sdk#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Uploading Images in Node.js With the Cloudinary Node SDK"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9","name":"melindapham","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","caption":"melindapham"}}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1698429759\/Blog-upload_nodejs\/Blog-upload_nodejs.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/31756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/87"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=31756"}],"version-history":[{"count":8,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/31756\/revisions"}],"predecessor-version":[{"id":38931,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/31756\/revisions\/38931"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/31758"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=31756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=31756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=31756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}