Image Optimizer Powered by Uploadcare plugin
This plugin is only available for paid TinyMCE subscriptions. |
This feature is only available for TinyMCE 7.6.0 and later. |
Overview
The Image Optimizer plugin offers a range of powerful features for image hosting, serving, and editing. These include responsive image delivery, automatic image format selection, automatic compression, and non-destructive image transformations and adjustments, all powered by Uploadcare.
Key benefits
-
Improve page loading speed and save on bandwidth by serving images in the optimal size, format, and compression based on the visitor’s browser and device.
-
Ditch the image editor and adjust images right inside TinyMCE with non-destructive transformations and adjustments. Change your mind any time!
-
Stay safe and compliant with secure uploads, built in malware protection, and unsafe content detection
-
Enterprise-ready scalable cloud storage provided by Uploadcare, delivered through its lightning-fast global CDN, and compliant with SOC2 and GDPR standards.
Interactive example
-
TinyMCE
-
HTML
-
JS
-
Edit on CodePen
<textarea id="uploadcare">
<h1>Discover Your Dream Home on Mallorca: Where Paradise Meets Investment</h1>
<p>
<span style="color: #4e5c73;">
Mallorca, the jewel of the Mediterranean, is not just a place of beauty—it’s a smart investment. With property values consistently on the rise, now is the perfect time to secure your piece of this sun-soaked paradise.
</span>
</p>
<figure class="image">
<img style="width: min(2048px, 100%); aspect-ratio: 2048 / 718;"
src="https://ucarecdn.com/b51db038-86df-4a83-bd9d-6942151306d0/-/preview/"
sizes="(min-width: 2048px) 2048px, 100vw"
srcset="https://ucarecdn.com/b51db038-86df-4a83-bd9d-6942151306d0/-/resize/100x/ 100w,
https://ucarecdn.com/b51db038-86df-4a83-bd9d-6942151306d0/-/resize/200x/ 200w,
https://ucarecdn.com/b51db038-86df-4a83-bd9d-6942151306d0/-/resize/300x/ 300w,
https://ucarecdn.com/b51db038-86df-4a83-bd9d-6942151306d0/-/resize/500x/ 500w,
https://ucarecdn.com/b51db038-86df-4a83-bd9d-6942151306d0/-/resize/750x/ 750w,
https://ucarecdn.com/b51db038-86df-4a83-bd9d-6942151306d0/-/resize/1000x/ 1000w,
https://ucarecdn.com/b51db038-86df-4a83-bd9d-6942151306d0/-/resize/1250x/ 1250w,
https://ucarecdn.com/b51db038-86df-4a83-bd9d-6942151306d0/-/resize/1500x/ 1500w,
https://ucarecdn.com/b51db038-86df-4a83-bd9d-6942151306d0/-/resize/2000x/ 2000w,
https://ucarecdn.com/b51db038-86df-4a83-bd9d-6942151306d0/-/preview/ 2048w">
<figcaption>Michael Heuser on <a href="https://unsplash.com/@gum_meee">Unsplash</a></figcaption>
</figure>
<p>
Let us show you why Mallorca should be your next home—and introduce you to an exquisite villa that could soon be yours.
</p>
<blockquote>
<em>"The Mallorca real estate market has grown by an impressive 8% annually over the past five years,"</em> — Elena Alvarez, Market Analyst at Mediterranean Realty Insights.
</blockquote>
<p>
According to recent market data, Mallorca’s property values have experienced steady growth, with an average increase of 8% annually over the past five years. This consistent appreciation, coupled with a thriving rental market, makes it an ideal destination for investors seeking both luxury and financial returns.
</p>
<h2>Explore Our Featured Villa: The Epitome of Luxury </h2>
<p>
Located in one of Mallorca’s most exclusive areas, this exquisite villa offers breathtaking views and modern design. Every detail has been meticulously crafted to provide the ultimate in comfort and elegance.
</p>
<figure class="image">
<img style="width: min(2048px, 100%); aspect-ratio: 2048 / 1148;"
src="https://ucarecdn.com/ae5a4201-4b82-4238-94e8-78f4cccbffe8/-/preview/"
sizes="(min-width: 2048px) 2048px, 100vw"
srcset="https://ucarecdn.com/ae5a4201-4b82-4238-94e8-78f4cccbffe8/-/resize/100x/ 100w,
https://ucarecdn.com/ae5a4201-4b82-4238-94e8-78f4cccbffe8/-/resize/200x/ 200w,
https://ucarecdn.com/ae5a4201-4b82-4238-94e8-78f4cccbffe8/-/resize/300x/ 300w,
https://ucarecdn.com/ae5a4201-4b82-4238-94e8-78f4cccbffe8/-/resize/500x/ 500w,
https://ucarecdn.com/ae5a4201-4b82-4238-94e8-78f4cccbffe8/-/resize/750x/ 750w,
https://ucarecdn.com/ae5a4201-4b82-4238-94e8-78f4cccbffe8/-/resize/1000x/ 1000w,
https://ucarecdn.com/ae5a4201-4b82-4238-94e8-78f4cccbffe8/-/resize/1250x/ 1250w,
https://ucarecdn.com/ae5a4201-4b82-4238-94e8-78f4cccbffe8/-/resize/1500x/ 1500w,
https://ucarecdn.com/ae5a4201-4b82-4238-94e8-78f4cccbffe8/-/resize/2000x/ 2000w,
https://ucarecdn.com/ae5a4201-4b82-4238-94e8-78f4cccbffe8/-/preview/ 2048w">
<figcaption>Designed by <a href="https://www.freepik.com/">Freepik</a></figcaption>
</figure>
<ul>
<li><strong>5 luxurious bedrooms</strong> with private en-suite bathrooms</li>
<li><strong>Infinity pool</strong> with panoramic Mediterranean views</li>
<li><strong>Spacious terrace</strong> for outdoor dining and entertainment</li>
<li><strong>Private garden</strong> with lush landscaping</li>
<li><strong>Cutting-edge smart home system </strong></li>
</ul>
<figure class="image">
<img style="width: min(2000px, 100%); aspect-ratio: 2000 / 1121;"
src="https://ucarecdn.com/b384b67a-3c73-4629-be5f-07d6a2f49e01/-/preview/"
sizes="(min-width: 2000px) 2000px, 100vw"
srcset="https://ucarecdn.com/b384b67a-3c73-4629-be5f-07d6a2f49e01/-/resize/100x/ 100w,
https://ucarecdn.com/b384b67a-3c73-4629-be5f-07d6a2f49e01/-/resize/200x/ 200w,
https://ucarecdn.com/b384b67a-3c73-4629-be5f-07d6a2f49e01/-/resize/300x/ 300w,
https://ucarecdn.com/b384b67a-3c73-4629-be5f-07d6a2f49e01/-/resize/500x/ 500w,
https://ucarecdn.com/b384b67a-3c73-4629-be5f-07d6a2f49e01/-/resize/750x/ 750w,
https://ucarecdn.com/b384b67a-3c73-4629-be5f-07d6a2f49e01/-/resize/1000x/ 1000w,
https://ucarecdn.com/b384b67a-3c73-4629-be5f-07d6a2f49e01/-/resize/1250x/ 1250w,
https://ucarecdn.com/b384b67a-3c73-4629-be5f-07d6a2f49e01/-/resize/1500x/ 1500w,
https://ucarecdn.com/b384b67a-3c73-4629-be5f-07d6a2f49e01/-/preview/ 2000w">
<figcaption>Designed by <a href="https://www.freepik.com/">Freepik</a></figcaption>
</figure>
<p>
Step inside, and you’ll find bright, open living spaces that blend seamlessly with the outdoors, creating a harmonious living environment that’s both relaxing and inspiring.
</p>
<p>
Owning a villa in Mallorca means more than just having a home—it means living a life of luxury and adventure. From exploring charming villages to dining at world-class restaurants and sailing the turquoise waters, every day is a new experience.
</p>
<h2>Make This Dream a Reality</h2>
<p>
Don’t miss the opportunity to own a piece of paradise. <a href="https://www.tiny.cloud/contact/">Contact us today</a> to schedule a private tour of this exceptional villa and explore other exclusive properties on the island.
</p>
</textarea>
tinymce.init({
selector: "textarea",
plugins: [ "uploadcare", "code", "link", "preview", "lists" ],
uploadcare_public_key: 'cfef242412638bfc4193',
toolbar: "undo redo | styles | bold italic underline | forecolor | bullist numlist| link uploadcare | code preview",
height: 700,
content_style: `
body { max-width: 920px; margin: 1.5rem auto; padding: 0 2vw; }
h1 { font-size: 1.5em; }
h2 { font-size: 1.17em; }
h1, h2, h3, h4, h5, h6 { font-weight: 500; margin: 0 0 0.75rem; }
p + h1, p + h2, p + h3, p + h4, p + h5, p + h6 { margin-top: 2rem; }
p { line-height: 1.6; margin: 0; }
p + p { margin-top: 1rem; }
a { color: #2b70e3; }
blockquote { color: #4e5c73; font-weight: 200; font-size: 1.3rem; margin: 1rem 2rem; padding: 0 0 0 1rem; border-left: 2px solid #2b70e3 !important; }
figcaption {font-size: 0.875em;}
`
});
Basic setup
To add the Image Optimizer Powered by Uploadcare plugin to the editor, add uploadcare
to the plugins
option in the editor configuration.
For example:
tinymce.init({
selector: 'textarea',
plugins: 'uploadcare',
toolbar: 'uploadcare',
uploadcare_public_key: '<your-public-key>',
// uploadcare_signed_upload_auth_provider: (_publicKey) => Promise.resolve({
// signature: 'sig',
// expire: 123
// }), // Recommended option for secure uploads
});
The Image Optimizer Powered by Uploadcare plugin overrides the Quickbar quickimage toolbar item. To ensure a better user experience and to avoid having two image buttons configure |
Image Operations
Below is an overview of the features of the Image Optimizer Powered by Uploadcare plugin includes for image optimization:
Feature | Operation | Icon | Description |
---|---|---|---|
Align |
Provides alignment options for the image or element. |
||
Align Left |
Aligns the image to the left. |
||
Align Centre |
Centers the image. |
||
Align Right |
Aligns the image to the right. |
||
Transform |
Allows users to apply transformations to the image: |
||
Rotate Left |
Rotates the image counterclockwise (left). |
||
Rotate Right |
Rotates the image clockwise (right). |
||
Flip Vertically |
Flips the image vertically. |
||
Flip Horizontally |
Flips the image horizontally. |
||
Resize |
Changes the size of the image. |
||
Alt Text |
Adds alternative text to describe the image for accessibility purposes. |
||
Decorative Image |
Marks the image as decorative, indicating it doesn’t require alternative text for accessibility. This icon will only appear when the |
||
Caption |
Adds a caption below the image for additional context. |
||
Adjust |
Provides tools for adjusting image properties: |
||
Brightness |
Adjusts the image brightness. |
||
Contrast |
Adjusts the image contrast. |
||
Exposure |
Adjusts the image exposure. |
||
Gamma |
Adjusts the image gamma. |
||
Vibrance |
Adjusts the image vibrance. |
||
Saturation |
Adjusts the image saturation. |
||
Warmth |
Adjusts the image warmth. |
||
Grayscale |
Converts the image to grayscale. |
||
Invert Colors |
Inverts the image colors. |
||
Sharpen |
Sharpens the image. |
||
Blur |
Blurs the image. |
||
Revert |
Restores the image to its original state by undoing all edits. |
Options
The following configuration options affect the behavior of the Image Optimizer Powered by Uploadcare plugin.
uploadcare_public_key
Defines the public API key required to authenticate and interact with the Uploadcare API. This key identifies your account and ensures that uploads and operations are associated with your project. Without setting this key, the Uploadcare integration will not function.
This option is mandatory for using Uploadcare. |
Type: String
uploadcare_signed_upload_auth_provider
Specifies a function used to generate secure signatures for authenticated requests to Uploadcare. This function is required when enabling Uploadcare’s signed uploads feature, which ensures that only authorized users can upload files using your uploadcare_public_key
. The function should return a Promise
that resolves with an object containing the signature and expiration timestamp.
Use this option to enforce secure uploads, preventing unauthorized users from uploading files via your application.
Type: Function
Example: Setting uploadcare_signed_upload_auth_provider
tinymce.init({
selector: 'textarea',
plugins: 'uploadcare',
toolbar: 'uploadcare',
uploadcare_public_key: '<your-public-key>',
uploadcare_signed_upload_auth_provider: (_publicKey) => Promise.resolve({
signature: 'sig',
expire: 123
}),
});
Tiny recommends configuring the
For most integrations, enabling signed uploads by configuring this option ensures that only authorized uploads occur, reducing the risk of abuse and maintaining secure usage of your |
uploadcare_cdn_base_url
Specifies the domain used for the Uploadcare service. This domain determines where your files are uploaded and accessed. By default, the plugin uses the Uploadcare CDN ucarecdn.com
to host and deliver your files. If you use a custom domain, update this option to match your configuration.
Type: String
Default: https://ucarecdn.com/
uploadcare_srcset_steps
Specifies an array of numeric values representing the widths used to generate the srcset
attribute for responsive images. This enables browsers to select the most suitable resolution based on the device’s display and network conditions.
Customize this array to include only the widths required for your application. Reducing the number of resolutions can improve processing speed, while adding specific sizes can accommodate unique layout needs.
Type: Array
Default: [100, 200, 300, 500, 750, 1000, 1250, 1500, 2000, 2500, 3000]
Example: Generated srcset
Attribute with Custom Widths
When an image is uploaded, its original width is used to create a srcset
attribute with downscaled images for the defined widths. For instance, if the image width is 780 pixels and uploadcare_srcset_steps
is set to [100, 200, 300, 500, 750]
, the resulting srcset
will look like this:
srcset
<img
style="width: min(780px, 100%); aspect-ratio: 780 / 780;"
src="https://ucarecdn.com/{image-uid}/-/preview/"
sizes="(min-width: 780px) 780px, 100vw"
srcset="
https://ucarecdn.com/{image-uid}/-/resize/100x/ 100w,
https://ucarecdn.com/{image-uid}/-/resize/200x/ 200w,
https://ucarecdn.com/{image-uid}/-/resize/300x/ 300w,
https://ucarecdn.com/{image-uid}/-/resize/500x/ 500w,
https://ucarecdn.com/{image-uid}/-/resize/750x/ 750w,
https://ucarecdn.com/{image-uid}/-/preview/ 780w
">
This ensures the browser selects the optimal image size based on the viewport and device characteristics, enhancing performance and user experience. On devices with narrower viewports, smaller images (e.g., 100w or 200w) will be prioritized, reducing bandwidth usage.
uploadcare_store_type
Specifies the storage type for uploaded files. Use this option to control whether files are stored temporarily or permanently, or allow Uploadcare to decide automatically based on your account settings.
-
auto
: Uploadcare decides the storage type. -
temporary
: Files are stored temporarily and will expire after a certain period. -
permanent
: Files are stored permanently in your Uploadcare account.
Select the appropriate value based on your application’s requirements, such as whether files should persist for long-term use or be available for a limited time.
Type: String
Default: permanent
Possible values: auto
, temporary
, permanent
a11y_advanced_options
This option affects the functionality of:
-
The Accessibility Checker plugin (
a11ychecker
). -
The Image plugin (
image
). -
The Image Optimizer Powered by Uploadcare plugin (
uploadcare
).
Setting a11y_advanced_options
to true
:
-
Adds the Image is decorative option to the Insert/Edit Image dialog, allowing users to specify that an image is decorative and does not require alternative text for accessibility purposes.
-
Adds the Decorative image button to Image Optimizer’s Alt text context toolbar, allowing users to specify that an image is decorative and does not require alternative text for accessibility purposes.
-
Adds the Image is decorative option to the Accessibility Checker error dialog for images without alternative text or the
role="presentation"
attribute.
If |
Type: Boolean
Default value: false
Possible values: true
, false
Toolbar buttons
The Image Optimizer Powered by Uploadcare plugin provides the following toolbar buttons:
Identifier | Description |
---|---|
|
Inserts an image placeholder element. This placeholder supports image uploads via drag-and-drop, file selection, or by providing a URL. |
These toolbar buttons can be added to the editor using:
-
The
toolbar
configuration option. -
The
quickbars_insert_toolbar
configuration option.
Menu items
The Image Optimizer Powered by Uploadcare plugin provides the following menu items:
Identifier | Description |
---|---|
|
Inserts an image placeholder element. This placeholder supports image uploads via drag-and-drop, file selection, or by providing a URL. |
These menu items can be added to the editor using:
-
The
menu
configuration option. -
The
contextmenu
configuration option.