This feed does not validate.
line 315, column 4: (12 occurrences) [help]
<published>2025-08-26 17:37:36 UTC</published>
^
line 315, column 38: (12 occurrences) [help]
<published>2025-08-26 17:37:36 UTC</published>
^
line 316, column 36: (12 occurrences) [help]
<updated>2025-08-26 17:37:36 UTC</updated>
^
In addition, interoperability with the widest range of feed readers could be improved by implementing the following recommendations.
line 13, column 0: (12 occurrences) [help]
<content type="html"><style>* { box-sizing: border-box; } body {ma ...
line 13, column 0: (30 occurrences) [help]
<content type="html"><style>* { box-sizing: border-box; } body {ma ...
line 16, column 0: (76 occurrences) [help]
<p>Tap into the top <a href="https://elements.envato.com/learn/ai-t ...
line 17, column 0: (612 occurrences) [help]
<figure class="post_image"><a href="https://labs.envato.com/image-g ...
line 348, column 0: (3 occurrences) [help]
<blockquote style="margin:auto;border: 0px solid #CCCCCC;" class="tiktok- ...
line 348, column 0: (3 occurrences) [help]
<blockquote style="margin:auto;border: 0px solid #CCCCCC;" class="tiktok- ...
line 1064, column 0: (12 occurrences) [help]
<figure class="embedded-video" data-video-embed="true" data-original-url= ...
line 1064, column 0: (12 occurrences) [help]
<figure class="embedded-video" data-video-embed="true" data-original-url= ...
line 1065, column 0: (19 occurrences) [help]
<iframe src="https://www.youtube.com/embed/FUIqR1G9QV4?rel=0& ...
line 2043, column 0: (660 occurrences) [help]
<li><span style="text-align:-webkit-match-parent">An editor that ...
</div><div data-content-block-type="MultiElementItem" class="conten ...
line 6531, column 0: (12 occurrences) [help]
<div class="flex flex-row items-center div-container" data-multi-element- ...
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
<id>tag:tutsplus.com,2005:/posts</id>
<link rel="alternate" type="text/html" href="https://tutsplus.com"/>
<link rel="self" type="application/atom+xml" href="https://tutsplus.com/posts.atom"/>
<title>Envato Tuts+ Tutorials</title>
<updated>2025-08-26T17:37:36Z</updated>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/cms-109192</id>
<published>2025-05-29T16:17:09+00:00</published>
<link rel="alternate" type="text/html" href="https://design.tutsplus.com/articles/the-best-ai-image-generators-2025--cms-109192"/>
<title>The best AI image generators of 2025</title>
<content type="html"><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="in0f">
<p>Looking to create your next AI masterpiece? Or do you simply want to discover fantastic assets to use in your next creative project? Finding the best AI tool for graphic design will help you take your ideas to the next level, and many of the latest and best AI image generators are not only easy to use but often free to try out as well.</p>
<p>Here, creative folk can find our edit of the best AI image generators of 2025, from Midjourney to <a href="https://labs.envato.com/image-gen" target="_blank" rel="noopener">ImageGen</a>, as well as tips for using AI design apps like Adobe Firefly to integrate imagery into your own designs.</p>
<p>Tap into the top <a href="https://elements.envato.com/learn/ai-trends" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">2025 AI design trends</a> with these <a href="https://design.tutsplus.com/compatible-with/ai-tools" target="_self">AI tools</a> for graphic design, photography, and advanced image editing, and see your projects come to life!</p>
<figure class="post_image"><a href="https://labs.envato.com/image-gen"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg" alt="imagegen envato labs ai image generator" loading="lazy" width="870px" height="498px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg" alt="imagegen envato labs ai image generator" loading="lazy" width="650px" height="374px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg" alt="imagegen envato labs ai image generator" loading="lazy" width="380px" height="222px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg 2x"></a>
<figcaption>You can create images like this using Envato's ImageGen.</figcaption>
</figure>
<h2 id="toc-1wqi-the-best-ai-image-generators">The best AI image generators in 2025</h2>
<table>
<tbody>
<tr>
<td>
<p><a href="#toc-6eaf-envato-imagegen" target="_blank" rel="noopener">Envato ImageGen</a></p>
</td>
<td>Best for social media content, trending styles, and the leading models available!</td>
</tr>
<tr>
<td><a href="#toc-z9w6-chatgpt-gpt-4o" target="_blank" rel="noopener">Chat GPT (GPT-4o)</a></td>
<td>Best for photorealism and conversational editing.</td>
</tr>
<tr>
<td>
<p><a href="#toc-c6rb-adobe-firefly" target="_blank" rel="noopener">Adobe Firefly</a></p>
</td>
<td>Best for photography and project integration.</td>
</tr>
<tr>
<td>
<p><a href="#toc-f9ln-midjourney" target="_blank" rel="noopener">Midjourney</a></p>
</td>
<td>Best for artistic, atmospheric imagery.</td>
</tr>
<tr>
<td>
<p><a href="#toc-gm84-dalle-3" target="_blank" rel="noopener">DALL·E 3</a></p>
</td>
<td>Best for cartoons and nuanced prompts.</td>
</tr>
<tr>
<td>
<p><a href="#toc-0p5k-flux-11-pro-ultra" target="_blank" rel="noopener">Flux 1.1 Pro Ultra</a></p>
</td>
<td>Best for high-definition portraits.</td>
</tr>
<tr>
<td><a href="#toc-5k1a-recraft" target="_blank" rel="noopener">Recraft</a></td>
<td>Best for graphic designs and vector images.</td>
</tr>
<tr>
<td><a href="#toc-rgcp-stable-diffusion" target="_blank" rel="noopener">Stable Diffusion</a></td>
<td>Best for uninterrupted creativity. </td>
</tr>
<tr>
<td><a href="#toc-xkfx-reve" target="_blank" rel="noopener">Reve</a></td>
<td>Best for fast generation and high detail.</td>
</tr>
<tr>
<td><a href="#toc-mj73-ideogram" target="_blank" rel="noopener">Ideogram</a></td>
<td>Best for clear text and commercial imagery.</td>
</tr>
</tbody>
</table>
<h2 id="toc-6yr2-what-is-an-ai-image-generator">What is an AI image generator?</h2>
<p>First, back to basics—maybe you’ve used an <strong>AI image generator from photo</strong> before and are curious about what else is out there, or perhaps you’re fresh to the AI app scene. Either way, AI image generators are fast becoming an essential tool in a creative’s kit to visualize ideas and experiment with different styles and layouts. And with the advances in the technology, it's now possible to use AI art generators to create unique work as part of a creative project.</p>
<p>In a nutshell, AI image generators transform your <a href="https://elements.envato.com/learn/ai-art-prompts" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">AI art prompts</a> into a visual image. The more refined and specific your text prompt, the more likely it is that the resulting image will be in line with what you imagined.</p>
<h3 id="toc-gkdx-how-do-ai-image-generators-work">How do AI image generators work?</h3>
<p>They're trained on vast amounts of visual data, allowing the generator to build associations between styles, subjects, and patterns. The more advanced image generators will be able to pick up on AI image trends and design trends more widely, creating more relevant and contemporary results. The best AI design apps are capable of generating images that are almost indistinguishable from real-life pictures—although there are a range of <a href="https://design.tutsplus.com/articles/is-this-image-ai-generated--cms-108441" target="_blank" rel="noopener">tell-tale signs</a> you can use to identify AI-generated imagery.</p>
<p>And yup... human hands are still a sore point for almost all the image generators we tried. So we'll keep you posted on that one!</p>
<figure class="post_image"><a href="https://labs.envato.com/image-gen/70003410-5055-48e7-b0c0-f5492c25d5eb"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg" alt="ai generated hand dodgy" loading="lazy" width="870px" height="870px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg" alt="ai generated hand dodgy" loading="lazy" width="650px" height="650px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg" alt="ai generated hand dodgy" loading="lazy" width="380px" height="380px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg 2x"></a>
<figcaption><a href="https://labs.envato.com/image-gen/70003410-5055-48e7-b0c0-f5492c25d5eb" target="_blank" rel="noopener">Image</a> created with Envato's ImageGen.</figcaption>
</figure>
<h2 id="toc-5qt7-what-are-the-best-ai-design-apps">What are the best AI design apps?</h2>
<p>It’s important to know that the best AI design apps <strong>enable your creativity</strong>, rather than replacing it. They take your ideas and turn them into reality, allowing you to refine your AI image results further to achieve particular angles, styles, colors, and trends.</p>
<p>The most advanced AI design tools might allow you to integrate AI images into your own work, creating a seamless design that blends the best of both worlds. So depending on what you’re looking for—whether mapping out a creative idea or looking for something more sophisticated—these are the best AI design apps by project. Scroll down for the full list of our recommendations to discover even more great AI tools for design, and take a deep dive into the features they offer.</p>
<h3 id="toc-r5br-which-ai-tool-is-best-for-graphic-design">Which AI tool is best for graphic design?</h3>
<p>The <a href="https://elements.envato.com/lp/ai-stack/" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">best AI tool for graphic design</a>? If you’re looking to map out design concepts for a brief, a quick and intuitive app like <a href="https://labs.envato.com/image-gen" target="_blank" rel="noopener">ImageGen</a> is a great starting point for beginners, and it includes an <a href="https://elements.envato.com/learn/ai-art-prompts" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">AI prompt</a> enhancement feature that makes your text even more effective.</p>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/what-is-envato-ai-imagegen--cms-108551"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What is Envato AI ImageGen?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Maria Villanueva</div>
<div class="roundup-block__published-date">01 Aug 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/is-this-image-ai-generated--cms-108441"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Is This Image AI-Generated? Here's How You Can Tell</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">MissChatz</div>
<div class="roundup-block__published-date">11 Mar 2024</div>
</div>
</div>
</div>
</div></a></li>
</ul>
<p>For creating logos, typography, and icons, online AI app <a href="https://ideogram.ai/t/explore" target="_blank" rel="noopener">Ideogram</a> allows graphic designers to pull multiple elements together into a cohesive layout for posters, flyers, or banners.</p>
<p><a href="https://www.recraft.ai/" target="_blank" rel="noopener">Recraft</a> places an emphasis on AI images that have an editorial, polished feel, making it a great fit for advertising work or branded campaigns.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg" alt="recraft ai image generator app for graphic design" loading="lazy" width="870px" height="561px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg" alt="recraft ai image generator app for graphic design" loading="lazy" width="650px" height="421px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg" alt="recraft ai image generator app for graphic design" loading="lazy" width="380px" height="249px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg 2x"></figure>
<h3 id="toc-0g25-which-ai-tool-is-best-for-fun">Which AI tool is best for... just having fun?</h3>
<p>To make a quick start with creating AI images, and have plenty of fun in the process, you could try a simple image generator tool like Google’s <a href="https://gemini.google/overview/image-generation/?hl=en" target="_blank" rel="noopener">Gemini</a>, which gives experimental (and often downright weird) results with just a few words.</p>
<p>Or take <a href="https://www.meta.ai/" target="_blank" rel="noopener">Meta AI</a> for a spin, which has been designed with beginners in mind. In the app, tap <strong>Ask Meta AI </strong>and type in what you’d like to generate, starting with <strong>Imagine</strong>. Place yourself into different scenarios (however bizarre) and share the results on social media. Just don’t expect anything too advanced!</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/meta_ai.jpg" alt="meta ai image generator" loading="lazy" width="870px" height="485px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/meta_ai.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/meta_ai.jpg" alt="meta ai image generator" loading="lazy" width="650px" height="365px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/meta_ai.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/meta_ai.jpg" alt="meta ai image generator" loading="lazy" width="380px" height="217px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/meta_ai.jpg 2x"></figure>
<h3 id="toc-qqaf-which-ai-tool-is-best-for-photography">Which AI tool is best for photography?</h3>
<p><a href="https://www.adobe.com/products/firefly.html" target="_blank" rel="noopener">Adobe Firefly</a> is one of the best AI tools for advanced image editing, allowing you to create and refine sophisticated prompts, work with the latest generative AI technology, and integrate your imagery into existing photographs. Experiment with different angles, backgrounds, and lighting prompts to get the most from your AI-generated photos. Flexible and natural results: it's a win-win.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg" alt="adobe firefly generative fill" loading="lazy" width="870px" height="586px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg" alt="adobe firefly generative fill" loading="lazy" width="650px" height="440px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg" alt="adobe firefly generative fill" loading="lazy" width="380px" height="260px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg 2x"></figure>
<h3 id="toc-gqtf-which-ai-tool-is-best-for-advanced-creative-work">Which AI tool is best for advanced creative work?</h3>
<p>It really depends on the type of project you're working on, but there are a growing number of AI design apps that cater to advanced graphic design, product design, photography, and brand work. <a href="https://www.midjourney.com/home" target="_blank" rel="noopener">Midjourney</a> is great for experimenting with artistic styles and subtle effects in your images, while content creators and filmmakers will love the advanced capabilities of AI video generation in <a href="https://runwayml.com/" target="_blank" rel="noopener">Runway</a>.</p>
<p>For more control over creative results, <a href="https://openai.com/index/dall-e-3/" target="_blank" rel="noopener">DALL·E 3</a> generates really impressive and accurate results. The app is built around ChatGPT but is fine-tuned to image generation, making your requests more atmospheric, nuanced, and specific.</p>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-create-a-movie-poster-using-ai-with-imagegen-and-imageedit--cms-109151"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">How to create a movie poster using AI with Envato ImageGen and ImageEdit</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Ashlee Harrell</div>
<div class="roundup-block__published-date">14 Mar 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/midjourney-vs-stable-diffusion-ai-image-generators--cms-108355"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Midjourney vs. Stable Diffusion: AI Image Generators</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">MissChatz</div>
<div class="roundup-block__published-date">01 Aug 2025</div>
</div>
</div>
</div>
</div></a></li>
</ul>
<p>For more recommended AI design apps, read on to discover our overview of some of the best AI image generators for graphic design and other creative projects in 2025.</p>
<h2 id="toc-zebw-the-best-ai-image-generators-of-2025-8-apps-to-use-now">The best AI image generators of 2025: 10 apps to use now</h2>
<p>Looking for the best AI for graphic design projects? Or something a little more cheap and cheerful? These are our top picks for 2025, with recommended use and price details.</p>
<h3 id="toc-6eaf-envato-imagegen">1. <a href="https://labs.envato.com/image-gen" target="_blank" rel="noopener">Envato ImageGen</a>
</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Quick and intuitive to use.</strong></li>
<li><strong>Always adding the latest cutting edge tech (the best models—like Imagen 4!)</strong></li>
<li><strong>Tap into trends and make images more precise with built-in AI prompt enhancement.</strong></li>
<li><strong>Continue editing and fine tuning images with <a href="https://labs.envato.com/image-edit" target="_self">ImageEdit</a>.</strong></li>
<li><strong>Turn static images into videos with <a href="https://labs.envato.com/video-gen" target="_blank" rel="noopener">VideoGen</a>.</strong></li>
</ul>
<p>If you’re looking for the balance of an intuitive, user-friendly interface with the potential to maximize the creative reach of your AI images, <a href="https://labs.envato.com/image-gen" target="_blank" rel="noopener">ImageGen</a> is well worth a look. It's easy for beginners to dive in thanks to the ability to enhance your prompts using AI, but this image generator also allows you to get really experimental with aesthetic styles and fun trends. So whether you’re looking for cutesy illustrations or photorealistic portraits, your image results are sure to be experimental, bold, and fun.</p>
<p>Envato's AI tools also have the added benefit of image editing via their <a href="https://labs.envato.com/image-edit" target="_self">ImageEdit</a> tools. You can customise your images even further to get the creation for your project.</p>
<p>You can also find a full suite of complementary <a href="https://labs.envato.com/" target="_self">creative AI tools</a> to pair with ImageGen, so you can <a href="https://labs.envato.com/video-gen" target="_blank" rel="noopener">generate videos from static images</a> or refine images further with background removal, erasure, and upscaling.</p>
<p><strong>Best for: </strong>Achieving trending image styles, social media content creation, enhanced AI prompts.</p>
<p><strong>Price: </strong>ImageGen is included as part of an Individual or Team plan at Envato, which also gives you complete access to Envato’s library of creative assets, plus all its AI tools that includes image editing, video generation, music generation, and voice generation. You can even try ImageGen for free with five image generations. (AI tools are not included with Enterprise plans.)</p>
<figure class="post_image"><a href="https://labs.envato.com/image-gen"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg" alt="envato imagegen ai image generator" loading="lazy" width="870px" height="454px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg" alt="envato imagegen ai image generator" loading="lazy" width="650px" height="342px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg" alt="envato imagegen ai image generator" loading="lazy" width="380px" height="204px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg 2x"></a></figure>
<h3 id="toc-z9w6-chatgpt-gpt-4o">2. <a href="https://chatgpt.com/" target="_blank" rel="noopener">ChatGPT (GPT-4o)</a>
</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Great for photorealistic images.</strong></li>
<li><strong>Understands sophisticated, precise prompts.</strong></li>
<li><strong>Edit images with the app conversation-style.</strong></li>
</ul>
<p>ChatGPT’s image generation capabilities have always been one of the strongest on the market, but with <a href="https://chatgpt.com/" target="_blank" rel="noopener">GPT-4o</a>, developed by OpenAI, users can create images that not only look amazing but are also imbued with more meaning and relevance.</p>
<p>Create images with sophisticated typography and meaningful text (no more blurry, nonsensical type bunged into your image for no good reason!), as well as ultra-convincing photorealistic effects. OpenAI dubs it the app for "useful image generation," and we have to agree—the accuracy and precision of prompts, as well as the conversational style of interacting with the app, make refining your image results easy and intuitive. So you can go from icon to game character to creating a whole visual world in very little time.</p>
<p><strong>Best for: </strong>Photorealism, sophisticated prompts, conversational refinement.</p>
<p><strong>Price: </strong>Free for all users, with a limit of three images per day. Plus ($20 per month) or Pro ($200 per month) users can generate unlimited images.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg" alt="chat gpt ai image generator" loading="lazy" width="870px" height="1143px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg" alt="chat gpt ai image generator" loading="lazy" width="650px" height="852px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg" alt="chat gpt ai image generator" loading="lazy" width="380px" height="496px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg 2x"></figure>
<h3 id="toc-c6rb-adobe-firefly">3. <a href="https://www.adobe.com/products/firefly" target="_blank" rel="noopener">Adobe Firefly</a>
</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Perfect for photographers looking to enhance their own photos.</strong></li>
<li><strong>Best for integrating into your own project workflow.</strong></li>
<li><strong>Benefit from cool features like Generative Fill.</strong></li>
</ul>
<p>Adobe’s AI powerhouse app has been created with designers in mind. Create images, video, audio, and vector graphics, collaborate with fellow creatives using <strong>Firefly Boards</strong>, and generate videos from static images.</p>
<p>Creative studios love <a href="https://www.adobe.com/products/firefly" target="_blank" rel="noopener">Firefly</a> for its advanced image-editing features and seamless user experience, making it feel like a part of your creative team rather than a standalone AI design app.</p>
<p><strong>Best for: </strong>Advanced photo editing, cool additional features like <strong>Generative Fill</strong>, integration of imagery into existing projects.</p>
<p><strong>Price: </strong>You can start using Firefly for free, with limited generative credits. Upgrade to Firefly Standard ($9.99 per month) or Firefly Pro ($29.99 per month) for unlimited image generation and features.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg" alt="adobe firefly ai design app" loading="lazy" width="870px" height="423px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg" alt="adobe firefly ai design app" loading="lazy" width="650px" height="319px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg" alt="adobe firefly ai design app" loading="lazy" width="380px" height="191px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg 2x"></figure>
<h3 id="toc-f9ln-midjourney">4. <a href="https://www.midjourney.com/home" target="_blank" rel="noopener">Midjourney</a>
</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Create highly artistic images.</strong></li>
<li><strong>High level of realism.</strong></li>
<li><strong>Adjust images easily with editing features.</strong></li>
</ul>
<p>Offering an enticing balance of exceptional ease of use and aesthetically pleasing results, Midjourney is beloved by fans for its ability to create dreamlike landscapes and immersive images that look like something straight out of a fantasy movie, with only a few text prompts.</p>
<p>To use it, you’ll need to sign up for an account with Discord, which is a social messaging platform popular with online gamers. After you've done that, you can use the app simply by typing <code>/imagine</code> in the Discord chat and creating your AI text prompt from there. One advantage of Midjourney is that it offers cool features to adjust your generated image, so you can create different variations, zoom out, or fill parts of the image with contextual imagery.</p>
<p><strong>Best for:</strong> Artistic results, atmospheric images, realism.</p>
<p><strong>Price: </strong>Start generating 25 images for free. After that, a Basic plan starts from $10 per month (or $8 if paid annually).</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/midjourney.jpg" alt="midjourney ai image generator" loading="lazy" width="870px" height="437px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/midjourney.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/midjourney.jpg" alt="midjourney ai image generator" loading="lazy" width="650px" height="329px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/midjourney.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/midjourney.jpg" alt="midjourney ai image generator" loading="lazy" width="380px" height="197px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/midjourney.jpg 2x"></figure>
<h3 id="toc-gm84-dalle-3">5. <a href="https://openai.com/index/dall-e-3/" target="_blank" rel="noopener">DALL·E 3</a>
</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Perfect for creating fun, cartoon-style, and surrealist imagery.</strong></li>
<li><strong>Less suited to photorealism.</strong></li>
<li><strong>Understands nuanced text prompts for greater precision.</strong></li>
</ul>
<p>As long as you’re not looking for realistic photography (which isn’t its strong point), DALL·E 3, hosted by OpenArt AI, is a good all-round image generator that excels at producing quirky and experimental images. Cartoon and 3D styles can come out really well, but the definition and quality of images can also vary widely.</p>
<p>Improving on its earlier iteration, DALL·E 2, <a href="https://openai.com/index/dall-e-3/" target="_blank" rel="noopener">DALL·E 3</a> is able to better understand complex text descriptions and create more specific images as a result.</p>
<p>A big plus of the generator is its accessibility and price point. Anyone with a ChatGPT account can access DALL·E 3, or you can use it for free through Bing's <a href="https://www.bing.com/images/create" target="_blank" rel="noopener">Image Creator</a>, making it a good-value option.</p>
<p><strong>Best for: </strong>Cartoons and comics, nuanced and accurate prompts, atmospheric imagery.</p>
<p><strong>Price: </strong>Available through ChatGPT Plus for $20 a month, or use for free via Bing Image Creator.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg" alt="dall e 3 ai image generator" loading="lazy" width="870px" height="470px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg" alt="dall e 3 ai image generator" loading="lazy" width="650px" height="354px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg" alt="dall e 3 ai image generator" loading="lazy" width="380px" height="211px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg 2x"></figure>
<h3 id="toc-0p5k-flux-11-pro-ultra">6. <a href="https://flux1.ai/flux1-1-ultra" target="_blank" rel="noopener">Flux 1.1 Pro Ultra</a>
</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Generate "look twice" highly photorealistic images.</strong></li>
<li><strong>Export images in high detail and high definition.</strong></li>
<li><strong>Requires patience and experimentation for best results.</strong></li>
</ul>
<p>Promising photorealism to rival real-life photography, <a href="https://flux1.ai/flux1-1-ultra" target="_blank" rel="noopener">Flux 1.1 Pro Ultra</a> by Black Forest Labs is causing quite a stir in creative circles, and for good reason. Image results are highly detailed, with exceptional lighting and accurate text rendering.</p>
<p>The interface is designed with developers in mind rather than designers, so it's not the most user-friendly AI design app. It also struggles with consistency and prompt refinement, so you have to be patient to get the best results.</p>
<p><strong>Best for: </strong>Ultra-photorealistic images, human portraits, high-definition 4K images.</p>
<p><strong>Price: </strong>Try Flux 1.1. Pro for free as part of a trial, or create more at $0.06 per image.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg" alt="flux ultra ai image generator" loading="lazy" width="870px" height="487px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg" alt="flux ultra ai image generator" loading="lazy" width="650px" height="366px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg" alt="flux ultra ai image generator" loading="lazy" width="380px" height="218px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg 2x"></figure>
<h3 id="toc-5k1a-recraft">7. <a href="https://www.recraft.ai/" target="_blank" rel="noopener">Recraft</a> </h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Great for graphic designers, product designers, and branding.</strong></li>
<li><strong>Generate polished, commercial imagery.</strong></li>
<li><strong>Combine typography and mockup imagery seamlessly.</strong></li>
</ul>
<p>The best AI tool for graphic design specifically might just be <a href="https://www.recraft.ai/" target="_blank" rel="noopener">Recraft</a>, which has a user-friendly interface for creating vector art, illustrations, and 3D graphics. Color control features allow you to keep your palette consistent across multiple images, making designs easily transferrable to branding projects or logo designs. You can also save your creations in a range of handy image formats, including SVG, JPG, and PNG.</p>
<p>We particularly love the attention to detail in Recraft, which means you can subtly adjust small elements of a design, such as typography, color, or background, and it’s super easy to integrate a design into a range of mockups, making it a useful AI design app for ideation and client pitch work.</p>
<p><strong>Best for: </strong>Graphic design, vector graphics, product mockups.</p>
<p><strong>Price: </strong>Try the app for free, or upgrade to a Basic plan for $12 a month (or $10 paid annually).</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/Recraft.jpg" alt="recraft image generator for graphic design" loading="lazy" width="870px" height="507px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/Recraft.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/Recraft.jpg" alt="recraft image generator for graphic design" loading="lazy" width="650px" height="381px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/Recraft.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/Recraft.jpg" alt="recraft image generator for graphic design" loading="lazy" width="380px" height="226px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/Recraft.jpg 2x"></figure>
<h3 id="toc-rgcp-stable-diffusion">8. <a href="https://stablediffusionweb.com/" target="_blank" rel="noopener">Stable Diffusion</a>
</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Uncensored content gives complete creative flexibility.</strong></li>
<li><strong>Mimics the creative process most accurately out of all the apps we tested.</strong></li>
<li><strong>Free for most individuals, for commercial and personal use.</strong></li>
</ul>
<p>User-friendly and cost-effective, <a href="https://stablediffusionweb.com/" target="_blank" rel="noopener">Stable Diffusion</a> is an open-source AI image generator developed by Stability AI. Unrestricted and uncensored content gives users more freedom and artistic reach than other AI image generators, granting access to a broader library of content.</p>
<p>A vast library of extensions also allows creatives to fine-tune their image results with ease. If you’re looking for an AI design app that feels closest to an actual artistic process, Stable Diffusion is possibly the most creative tool on the market right now.</p>
<p><strong>Best for:</strong> Uninterrupted creativity, flexible editing, artistic results.</p>
<p><strong>Price: </strong>Free for most users, with larger organizations required to purchase a licence.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg" alt="stable diffusion ai image editor and generator" loading="lazy" width="870px" height="779px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg" alt="stable diffusion ai image editor and generator" loading="lazy" width="650px" height="583px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg" alt="stable diffusion ai image editor and generator" loading="lazy" width="380px" height="341px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg 2x"></figure>
<h3 id="toc-xkfx-reve">9. <a href="https://reveai.org/" target="_blank" rel="noopener">Reve</a>
</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Ultra-speedy image generation.</strong></li>
<li><strong>High-quality, detailed results.</strong></li>
<li><strong>Experiment with a wide range of styles.</strong></li>
</ul>
<p>Fast, free, and super easy to use, <a href="https://reveai.org/" target="_blank" rel="noopener">Reve</a> is a new kid on the AI block (having been released in March 2025), but it's fast becoming a favorite amongst creatives looking for an all-in-one AI image generator that won’t break the bank.</p>
<p>One of the cool features of Reve is the range of aesthetic styles you can play with, such as watercolor, fantasy, and photorealistic. With a little experimentation, you can create highly detailed, immersive images in just a few seconds, and it almost always responds to AI text prompts with efficiency and precision. Well worth a look, we think!</p>
<p><strong>Best for: </strong>Fast image generation, high-quality and detailed imagery, precise text prompts.</p>
<p><strong>Price: </strong>Free for all users.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/reve_2.jpg" alt="reve image generator ai" loading="lazy" width="870px" height="634px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/reve_2.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/reve_2.jpg" alt="reve image generator ai" loading="lazy" width="650px" height="475px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/reve_2.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/reve_2.jpg" alt="reve image generator ai" loading="lazy" width="380px" height="280px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/reve_2.jpg 2x"></figure>
<h3 id="toc-mj73-ideogram">10. <a href="https://ideogram.ai/t/explore" target="_blank" rel="noopener">Ideogram</a>
</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Renders text accurately from prompts.</strong></li>
<li><strong>Generate commercial-style imagery.</strong></li>
<li><strong>The best of both worlds with graphic and photo integration.</strong></li>
</ul>
<p>On the market since 2023, <a href="https://ideogram.ai/t/explore" target="_blank" rel="noopener">Ideogram</a> is a strong contender for the best AI image generator for graphic design and gaming imagery, and it's particularly notable for its ability to integrate text as part of imagery without distortion or ‘gobbledygook’.</p>
<p>Ideogram uses <strong>Magic Prompt</strong>, which transforms a basic text prompt into a more complex and specific description, giving you improved art results. We think it’s a great all-round AI design app for graphic designers, artists, and brand designers, letting you create commercial-style imagery that looks polished and professional.</p>
<p><strong>Best for: </strong>Clear text on images, branded graphics, commercial imagery.</p>
<p><strong>Price: </strong>Start for free, or begin at $7 a month paid annually for more credits and faster generation speeds.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/Ideogram.jpg" alt="ideogram ai image generator" loading="lazy" width="870px" height="499px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/Ideogram.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/Ideogram.jpg" alt="ideogram ai image generator" loading="lazy" width="650px" height="375px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/Ideogram.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/Ideogram.jpg" alt="ideogram ai image generator" loading="lazy" width="380px" height="223px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/Ideogram.jpg 2x"></figure>
<h2 id="toc-5f2j-the-best-ai-image-generator-for-your-next-project-is">The best AI image generator for your next project is...?</h2>
<p>In an increasingly crowded AI app market, it can be tricky to work out which AI image generator is the right choice for you. Hopefully our selection will help you land on the best AI design app for your next creative project. The advantage of having multiple options to choose from is that many AI developers are starting to cater specifically to certain creative tasks and industries.</p>
<p>So, whether you’re a product designer looking to mock up your next range or a graphic designer seeking a quick mood board of ideas for a client, there are now highly effective AI image generators that are tailored to these purposes. Find the AI app to fit your niche, and let your ideas flow. You’ll be creating amazing AI art in no time!</p>
<p>The next step in your AI journey? You’ll need to discover the <a href="https://elements.envato.com/learn/ai-art-prompts" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">best AI art prompts</a> to generate jaw-dropping imagery, or why not learn <a href="https://design.tutsplus.com/tutorials/how-to-create-a-movie-poster-using-ai-with-imagegen-and-imageedit--cms-109151" target="_blank" rel="noopener">how to create an AI movie poster</a> to test your AI creative skills? And while you’re here, you can dive straight into creating AI photography, illustrations, and artwork in a few clicks with <a href="https://labs.envato.com/image-gen" target="_blank" rel="noopener">ImageGen</a>.</p>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/109192/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109192/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109192/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109192/a2t.img" width="1" /></div></content>
<published>2025-08-26 17:37:36 UTC</published>
<updated>2025-08-26 17:37:36 UTC</updated>
<author>
<name>Dummy Dummy</name>
</author>
</entry>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/cms-108501</id>
<published>2024-02-10T16:00:27+00:00</published>
<link rel="alternate" type="text/html" href="https://business.tutsplus.com/tutorials/get-creative-job-in-ai--cms-108501"/>
<title>What you need to know to get a creative job in AI</title>
<content type="html"><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="iyev">
<p><span>People worry about Artificial Intelligence (AI) taking away jobs. But while AI may be doing some work previously done by humans, it also creates new and exciting opportunities for careers in AI—including for creative professionals.</span></p>
<figure class="post_image"><a href="https://elements.envato.com/engineer-maintenancing-ai-systems-LEV9EVV" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/988/posts/108501/image-upload/creative_job_AI_1.jpg" alt="AI and Creatives" loading="lazy" width="870px" height="468px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/988/posts/108501/image-upload/creative_job_AI_1.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/988/posts/108501/image-upload/creative_job_AI_1.jpg" alt="AI and Creatives" loading="lazy" width="650px" height="352px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/988/posts/108501/image-upload/creative_job_AI_1.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/988/posts/108501/image-upload/creative_job_AI_1.jpg" alt="AI and Creatives" loading="lazy" width="380px" height="210px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/988/posts/108501/image-upload/creative_job_AI_1.jpg 2x"></a>
<figcaption>There are careers in AI beyond the technical fields. (<em>Image source: <a href="https://elements.envato.com/engineer-maintenancing-ai-systems-LEV9EVV" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Envato</a></em>)</figcaption>
</figure>
<p><span>According to an estimate from the World Economic Forum, <a href="https://reports.weforum.org/docs/WEF_Future_of_Jobs_Report_2025.pdf" target="_self">170 million new jobs</a><a href="https://www3.weforum.org/docs/WEF_Future_of_Jobs_2020.pdf" target="_blank" rel="noopener"> </a>will emerge in the AI industry by 2030. Keep reading if you want to learn about jobs in AI and how to get a job in AI.</span></p>
<p><span>In this article, you'll learn more about how AI affects creative opportunities. We'll outline some creative AI roles. Then, we'll explain what you need to know to prepare for AI Jobs.</span></p>
</div><div data-content-block-type="TableOfContents" class="content-block content-block-tableofcontents" id="ihz1">
<div data-content-block-type="ContentTextBlock" class="content-block content-block-contenttextblock" id="ijbd"><p>Jump to content in this section:</p></div>
<ul class="visual-toc-list toc-ordered-list visual-toc__regular-theme div-container" start="0">
<li class="toc-item-title"><a href="#toc-tnne-breaking-into-jobs-in-artificial-intelligence-a-guide-for-creative-professionals"><span class="visual-toc__heading-title content-container">Breaking into jobs in artificial intelligence: A guide for creative professionals</span></a></li>
<li class="toc-item-title"><a href="#toc-s5u2-overview-of-creative-jobs-in-ai"><span class="visual-toc__heading-title content-container">Overview of creative jobs in AI</span></a></li>
<li class="toc-item-title"><a href="#toc-16mh-learn-more-about-ai"><span class="visual-toc__heading-title content-container">Learn more about AI</span></a></li>
<li class="toc-item-title"><a href="#toc-zo3o-get-your-job-search-ai-reading-with-envato-elements"><span class="visual-toc__heading-title content-container">Get your job search going with Envato</span></a></li>
</ul>
</div><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="i0k2p">
<h2 id="toc-tnne-breaking-into-jobs-in-artificial-intelligence-a-guide-for-creative-professionals"><span>Breaking into jobs in artificial intelligence: A guide for creative professionals</span></h2>
<p><span>To break into a creative job in the AI industry, there are a few things you can do to give yourself an edge over other candidates:</span></p>
<h3 id="toc-0nvm-develop-the-right-skills">1. Practice using AI tools</h3>
<p>The best way to get an AI job is to work with the tools that are revolutionizing the field. <a href="https://labs.envato.com/" target="_self">Envato's AI tools</a> make this possible. You can generate images using <a href="https://labs.envato.com/image-gen" target="_self">ImageGen</a>, and then modify them using <a href="https://labs.envato.com/image-edit" target="_self">ImageEdit</a> to remove objects, alter backgrounds, or rearrange layouts. <a href="https://labs.envato.com/voice-gen" target="_self">VoiceGen </a>makes it possible to create realistic voiceovers, which is helpful in trying out ideas in content and advertising.</p>
<p>These are hands-on tools, flexible and intuitive. They're especially worth it if you're figuring out how to get a job in AI without a degree. You'll build real-world skills and a portfolio showing what you can do. Whether you're studying AI marketing tools or preparing for AI careers, Envato gives you space to create, learn, and grow with confidence.</p>
</div><div data-content-block-type="SocialContentEmbed" class="content-block content-block-socialcontentembed relative w-full flex flex-col justify-center items-center" id="i8scy"><div class="w-full flex flex-col justify-center items-center social-content-embed">
<blockquote style="margin:auto;border: 0px solid #CCCCCC;" class="tiktok-embed" cite="https://www.tiktok.com/@learnwithseb/video/7509579188488178946" data-video-id="7509579188488178946"> <section> <a target="_blank" title="@learnwithseb" href="https://www.tiktok.com/@learnwithseb?refer=embed">@learnwithseb</a> 📚 7 FREE AI Resources (No Tech Skills Needed) You don’t need to code. You just need the right tools. I found the 7 best free resources to learn AI *without* a computer science degree. No fluff. Just stuff you can use right now. Comment “AI” if you want the links (I can’t add them to my bio yet 🙃) Save this before it disappears. Links to all resources here: https://learnwithseb.systeme.io/ (Click the top link - no sign up required) <a title="learnai" target="_blank" href="https://www.tiktok.com/tag/learnai?refer=embed">#LearnAI</a> <a title="nocodeai" target="_blank" href="https://www.tiktok.com/tag/nocodeai?refer=embed">#NoCodeAI</a> <a title="aiforbeginners" target="_blank" href="https://www.tiktok.com/tag/aiforbeginners?refer=embed">#AIforBeginners</a> <a title="chatgpttips" target="_blank" href="https://www.tiktok.com/tag/chatgpttips?refer=embed">#ChatGPTTips</a> <a title="airesources" target="_blank" href="https://www.tiktok.com/tag/airesources?refer=embed">#AIResources</a> <a title="promptengineering" target="_blank" href="https://www.tiktok.com/tag/promptengineering?refer=embed">#PromptEngineering</a> <a title="openai" target="_blank" href="https://www.tiktok.com/tag/openai?refer=embed">#OpenAI</a> <a title="aieducation" target="_blank" href="https://www.tiktok.com/tag/aieducation?refer=embed">#AIEducation</a> <a title="techforeveryone" target="_blank" href="https://www.tiktok.com/tag/techforeveryone?refer=embed">#TechForEveryone</a> <a title="futureofwork" target="_blank" href="https://www.tiktok.com/tag/futureofwork?refer=embed">#FutureOfWork</a> <a title="makeai" target="_blank" href="https://www.tiktok.com/tag/makeai?refer=embed">#MakeAI</a> <a title="n8n" target="_blank" href="https://www.tiktok.com/tag/n8n?refer=embed">#N8n</a> <a title="claudeai" target="_blank" href="https://www.tiktok.com/tag/claudeai?refer=embed">#ClaudeAI</a> <a title="googleai" target="_blank" href="https://www.tiktok.com/tag/googleai?refer=embed">#GoogleAI</a> <a target="_blank" title="♬ original sound - learnwithseb" href="https://www.tiktok.com/music/original-sound-7509579192834984726?refer=embed">♬ original sound - learnwithseb</a> </section> </blockquote> <script async="" src="https://www.tiktok.com/embed.js"></script>
</div></div><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="iiza8">
<h3 id="toc-ivbo-develop-the-right-skills">2. Develop the right skills</h3>
<p><span>As you may have noticed, AI jobs for creatives require a unique blend of the artistic and the technical. And since AI is changing and growing fast, you've got to make an effort to stay on top of industry trends and developments. Both free and paid courses are plentiful, so no matter what your budget is, you can pick up the necessary skills. </span></p>
<p><span>Invest in continuous growth in your creative field. Use AI tools so you’re familiar with them. And if you've got the interest and aptitude, try to learn one or more AI programming languages. The top ones are:</span></p>
<ul>
<li><span>Python</span></li>
<li><span>Java</span></li>
<li><span>JavaScript</span></li>
<li><span>Prolog</span></li>
<li><span>Lisp</span></li>
<li><span>Julia</span></li>
<li><span>Haskell</span></li>
<li><span>C++</span></li>
<li><span>R</span></li>
<li><span>Scala</span></li>
</ul>
<p><span>Although learning programming isn't always a requirement of creative AI jobs, it's something that can give you an advantage over other creative professionals. It'll also open up more opportunities for you.</span></p>
<h3 id="toc-hja1-create-a-robust-creative-portfolio"><span>3. Create a robust creative portfolio</span></h3>
<p><span>As a creative professional, you know the drill:<em> You need a stellar portfolio to show off what you’re capable of doing.</em> But to break into an AI job, your portfolio must integrate AI-related projects to show both your creativity and technical skills.</span></p>
<h3 id="toc-5auc-keep-updated-on-emerging-ai-technologies">4. Keep updated on emerging AI technologies</h3>
<p><span>You don’t have to be a computer engineer or programmer to keep abreast of AI developments. You can follow any of the tech-oriented websites, podcasts, newsletters, and social media accounts that discuss AI in layperson’s terms. Some podcasts are even dedicated to AI topics for the general audience. </span>Books on AI are also a good reference. If you want to learn how to get a job in AI without a degree, especially in a creative or marketing field, learning tools such as AI marketing tools can give you a practical edge and insight into how the industry is evolving.</p>
<h3 id="toc-yh2k-network-with-ai-communities">5. Network with AI communities</h3>
<figure class="post_image"><a href="https://elements.envato.com/diversity-people-party-brunch-cafe-concept-PZNM5AM" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/988/posts/108501/image-upload/networking.jpg" alt="People Networking" loading="lazy" width="870px" height="587px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/988/posts/108501/image-upload/networking.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/988/posts/108501/image-upload/networking.jpg" alt="People Networking" loading="lazy" width="650px" height="440px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/988/posts/108501/image-upload/networking.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/988/posts/108501/image-upload/networking.jpg" alt="People Networking" loading="lazy" width="380px" height="260px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/988/posts/108501/image-upload/networking.jpg 2x"></a>
<figcaption>Networking plays an important role in your search for AI careers. (<em>Image Source: <a href="https://elements.envato.com/diversity-people-party-brunch-cafe-concept-PZNM5AM" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Envato</a></em>)</figcaption>
</figure>
<p><span>Networking has always been one of the key elements of finding your ideal job, and it remains true for getting a job in AI. Attend in-person or virtual meetups focused on AI discussions for non-technical people. </span></p>
<p><span>Not only will you increase your knowledge and understanding of AI trends, but you’ll also meet AI professionals who tell you what it’s like to work in the AI industry. They may even have job leads for you.</span></p>
</div><div data-content-block-type="SocialContentEmbed" class="content-block content-block-socialcontentembed relative w-full flex flex-col justify-center items-center" id="igydd"><div class="w-full flex flex-col justify-center items-center social-content-embed">
<blockquote style="margin:auto;border: 0px solid #CCCCCC;" class="tiktok-embed" cite="https://www.tiktok.com/@deepa_toks/video/7208327571661114670" data-video-id="7208327571661114670"> <section> <a target="_blank" title="@deepa_toks" href="https://www.tiktok.com/@deepa_toks?refer=embed">@deepa_toks</a> Makes it so much easier to have more consistent and meaningful connections with people in your network :) <a title="careertiktok" target="_blank" href="https://www.tiktok.com/tag/careertiktok?refer=embed">#careertiktok</a> <a title="networking" target="_blank" href="https://www.tiktok.com/tag/networking?refer=embed">#networking</a> <a title="networkingadvice" target="_blank" href="https://www.tiktok.com/tag/networkingadvice?refer=embed">#networkingadvice</a> <a title="careeradvice" target="_blank" href="https://www.tiktok.com/tag/careeradvice?refer=embed">#careeradvice</a> <a title="networkingtips" target="_blank" href="https://www.tiktok.com/tag/networkingtips?refer=embed">#networkingtips</a> <a title="ai" target="_blank" href="https://www.tiktok.com/tag/ai?refer=embed">#AI</a> <a title="aitools" target="_blank" href="https://www.tiktok.com/tag/aitools?refer=embed">#AItools</a> <a title="networking" target="_blank" href="https://www.tiktok.com/tag/networking?refer=embed">#networking</a> <a title="careerdevelopment" target="_blank" href="https://www.tiktok.com/tag/careerdevelopment?refer=embed">#careerdevelopment</a> <a title="jobhunt" target="_blank" href="https://www.tiktok.com/tag/jobhunt?refer=embed">#jobhunt</a> <a target="_blank" title="♬ original sound - Deepa" href="https://www.tiktok.com/music/original-sound-7208327579588201262?refer=embed">♬ original sound - Deepa</a> </section> </blockquote> <script async="" src="https://www.tiktok.com/embed.js"></script>
</div></div><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="i397a">
<h3 id="toc-4elc-leverage-online-learning">6. Leverage online learning</h3>
<p><span>Because the AI field is always changing and evolving rapidly, you've got to commit to always be learning. Fortunately, there are many opportunities for learning. Many colleges and universities are offering AI-related courses. </span></p>
<p><span>If you prefer to learn virtually, you can do so through:</span></p>
<ul>
<li><a href="https://www.youtube.com/@envatotuts/search?query=artificial%20intelligence" target="_self"><span> YouTube videos</span></a></li>
<li><span>online courses</span></li>
<li><span> virtual events</span></li>
</ul>
<p><span>Even if you've got little—or no—budget for learning, you can find lots of ways to develop and enhance your skills in AI.</span></p>
</div><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="iofj5">
<h2 id="toc-s5u2-overview-of-creative-jobs-in-ai"><span>Overview of creative jobs in AI</span></h2>
<p><span>Contrary to popular belief, the AI industry doesn’t only offer opportunities for engineers and computer techies. It opens up an array of opportunities for creatives. </span></p>
<blockquote>
<p><span>“AI won't replace creative jobs just as the invention of the camera didn't make paintings obsolete,” </span><a href="https://www.businessinsider.com/ai-wont-kill-creative-jobs-camera-didnt-kill-paintings-adobe-2023-10#:~:text=AI%20won't%20replace%20creative,paintings%20obsolete%2C%20Adobe%20exec%20says&amp;text=Adobe%20executive%20Ashley%20Still%20said,and%20its%20impact%20on%20paintings." target="_blank" rel="noopener">says Ashley Still</a><span>, senior vice president of digital media at Adobe. </span></p>
</blockquote>
<p><span>And while digital cameras have enabled more people to take their own photos, professional photographers continue to be in high demand.</span></p>
<p><span>That’s because AI, even generative AI, can't create anything from scratch. It augments human intelligence rather than replacing it. With that in mind, here’s a list of creative AI jobs, also known as “AI creatives”:</span></p>
<h3 id="toc-t63r-ai-artist"><span>1. AI artist</span></h3>
<figure class="post_image"><a href="https://elements.envato.com/art-creative-and-woman-painting-on-canvas-in-a-wor-38J5RU4" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/988/posts/108501/image-upload/woman_painting_2.jpg" alt="Woman Paiting" loading="lazy" width="870px" height="618px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/988/posts/108501/image-upload/woman_painting_2.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/988/posts/108501/image-upload/woman_painting_2.jpg" alt="Woman Paiting" loading="lazy" width="650px" height="463px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/988/posts/108501/image-upload/woman_painting_2.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/988/posts/108501/image-upload/woman_painting_2.jpg" alt="Woman Paiting" loading="lazy" width="380px" height="273px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/988/posts/108501/image-upload/woman_painting_2.jpg 2x"></a>
<figcaption>Even artists can find careers in AI. (<em>Image source: <a href="https://elements.envato.com/art-creative-and-woman-painting-on-canvas-in-a-wor-38J5RU4" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Envato</a></em>)</figcaption>
</figure>
<p>An AI artist creates AI-generated art. This job requires expertise in creative design as well as computer vision and machine learning. The goal is to create visually stunning artwork and <a href="https://photography.tutsplus.com/articles/what-are-ai-photos-ai-generated-stock-image-potential-in-2023--cms-107545?_ga=2.68236182.687423277.1707494324-1337231014.1707494324">photos generated by AI</a>.</p>
<p><span>As an AI artist, you’ll be involved in every stage of the creative process:</span></p>
<ul>
<li><span>ideation and brainstorming</span></li>
<li><span>experimentation and development</span></li>
<li><span>production and exhibition</span></li>
</ul>
<p><span>The key is to create art that would be hard or impossible for humans to make. To succeed as an AI artist, you must be passionate about pushing the boundaries in AI-generated art.</span></p>
<h3 id="toc-qiqj-ai-content-writer-or-trainer"><span>2. AI content writer or trainer</span></h3>
<p><span>An AI content writer or trainer helps train Generative AI by writing novel conversations. These will be used to train GenAI on how to respond to queries and prompts. You’ll have conversations with GenAI, fact-check its responses, and track its progress. </span></p>
<p><span>You’ll need to have strong skills in writing dialogue and conversational text for this AI job. Creatives with experience in screenplay writing would have an edge.</span></p>
<p><span>Read: <a href="https://elements.envato.com/learn/ai-writing-tools-seo-content-businesses" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">10 Best AI copywriting tools for business</a></span></p>
<h3 id="toc-51ig-ai-copywriter-editor"><span>3. AI copywriter, editor</span></h3>
<p><span>An AI copywriter or AI editor creates informative content about AI. This may be for various platforms such as:</span></p>
<ul>
<li><span> blogs</span></li>
<li><span>newspapers</span></li>
<li><span>magazines</span></li>
<li><span>news agencies</span></li>
</ul>
<p>The job of an AI copywriter or editor usually encompasses keyword research, SEO writing, and market research. That is, you should know how to write engaging articles about AI that will rank highly in search engines.</p>
<p>Aside from good writing skills, you will also require experience in AI technologies as well as passion for its development and application in industries. Familiarity with AI marketing tools can prove to be an extra advantage, especially if you're exploring how to get a job in AI without a degree.</p>
<h3 id="toc-42po-ai-designer"><span>4. AI designer</span></h3>
<p><span>Not to be confused with techies who design user interfaces for AI, an AI designer is someone who creates designs using AI’s machine learning algorithms. It’s an exciting new field for graphic designers. </span></p>
<p><span>This job requires strong graphic design skills. At the same time, you must know how to use GenAI and how to use it in design projects.</span></p>
<p><span>Learn more: </span><a href="https://elements.envato.com/learn/ai-graphic-design" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">AI graphic design tools and techniques—how to harness AI for design</a></p>
<h3 id="toc-0tgg-ai-film-editor-and-director"><span>5. AI film editor and director</span></h3>
<p><span>An AI film editor and director </span><a href="https://photography.tutsplus.com/articles/10-best-ai-youtube-video-editor-maker-software-for-2024--cms-108279?_ga=2.261681930.687423277.1707494324-1337231014.1707494324"><span>uses AI to create videos</span></a><span> and films. With the help of AI, you’ll analyze audience preferences to optimize your films and videos for specific audiences, markets, and demographics. </span></p>
<p><span>You may also use AI for everything, including:</span></p>
<ul>
<li><span> casting</span></li>
<li><span>scriptwriting</span></li>
<li><span>visual effects</span></li>
<li><a href="https://photography.tutsplus.com/articles/e10-best-ai-animation-video-generator-software-tools-for-2024--cms-108301?_ga=2.5650612.687423277.1707494324-1337231014.1707494324"><span>animation</span></a></li>
<li><span>editing</span></li>
</ul>
<p><span>Aside from knowing the basics of film production, editing, and directing, you must know the latest AI technologies in film and video.</span></p>
</div><div data-content-block-type="SocialContentEmbed" class="content-block content-block-socialcontentembed relative w-full flex flex-col justify-center items-center" id="it4bg"><div class="w-full flex flex-col justify-center items-center social-content-embed">
<blockquote style="margin:auto;border: 0px solid #CCCCCC;" class="tiktok-embed" cite="https://www.tiktok.com/@envato/video/7466914752917179656" data-video-id="7466914752917179656"> <section> <a target="_blank" title="@envato" href="https://www.tiktok.com/@envato?refer=embed">@envato</a> Join @danatoday <a target="_blank" title="♬ original sound - Envato" href="https://www.tiktok.com/music/original-sound-Envato-7466914832445377296?refer=embed">♬ original sound - Envato</a> </section> </blockquote> <script async="" src="https://www.tiktok.com/embed.js"></script>
</div></div><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="i3vw">
<h3 id="toc-5ibl-ai-game-developer"><span>6. AI game developer</span></h3>
<p><span>The AI game developer role is a combination of creativity and programming know-how. The goal of this job is to create exciting games using AI. </span></p>
<p><span>Your role may be more on the creative side of things (designing game worlds and characters), or it may be more technical (writing algorithms and programming the game to bring the designers’ vision to life). Either way, you’ll need to know how to apply AI techniques in all phases of game development to optimize the gameplay experience for users.</span></p>
<h3 id="toc-23rl-ai-musician"><span>7. AI musician</span></h3>
<figure class="post_image"><a href="https://elements.envato.com/woman-playing-piano-online-at-home-R2KBEU6" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/988/posts/108501/image-upload/ai_musician_3_.jpg" alt="Musician" loading="lazy" width="870px" height="587px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/988/posts/108501/image-upload/ai_musician_3_.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/988/posts/108501/image-upload/ai_musician_3_.jpg" alt="Musician" loading="lazy" width="650px" height="440px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/988/posts/108501/image-upload/ai_musician_3_.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/988/posts/108501/image-upload/ai_musician_3_.jpg" alt="Musician" loading="lazy" width="380px" height="260px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/988/posts/108501/image-upload/ai_musician_3_.jpg 2x"></a>
<figcaption>AI can be used to help produce music. (<a href="https://elements.envato.com/woman-playing-piano-online-at-home-R2KBEU6" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Image source: Envato</a>)</figcaption>
</figure>
<p>Like the AI artist, an AI musician <a href="https://music.tutsplus.com/10-best-ai-beat-makers-to-generate-creative-music-quickly-2023--cms-107530a?_ga=2.103160583.687423277.1707494324-1337231014.1707494324">creates music using AI</a>. With AI streamlining your workflow, you’re expected to produce music for specific genres and themes, which would be almost impossible for humans to create.</p>
<p>The ability to play one or more musical instruments or sing would be an asset, along with knowledge of AI technologies. You’ll also need to be creative and give appropriate prompts to GenAI to produce unique and enthralling pieces of music.</p>
<h1>Read more: <a href="https://elements.envato.com/learn/ai-music-prompts" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">AI music prompting guide: Generating original tracks for your videos with MusicGen</a>
</h1>
<h3 id="toc-k1id-ai-reporter"><span>8. AI reporter</span></h3>
<figure class="post_image"><a href="https://elements.envato.com/young-female-reporter-holding-a-microphone-during--5FHWFXU" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/988/posts/108501/image-upload/AI_reporter.jpg" alt="Reporter" loading="lazy" width="870px" height="587px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/988/posts/108501/image-upload/AI_reporter.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/988/posts/108501/image-upload/AI_reporter.jpg" alt="Reporter" loading="lazy" width="650px" height="440px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/988/posts/108501/image-upload/AI_reporter.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/988/posts/108501/image-upload/AI_reporter.jpg" alt="Reporter" loading="lazy" width="380px" height="260px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/988/posts/108501/image-upload/AI_reporter.jpg 2x"></a>
<figcaption>AI Tools can assist reporters as well. (<em>Image source: <a href="https://elements.envato.com/young-female-reporter-holding-a-microphone-during--5FHWFXU" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Envato</a></em>)</figcaption>
</figure>
<p><span>Careers in artificial intelligence exist for reporters, too. The AI reporter job is specifically for those with a background in journalism. An AI journalist is someone who reports on the AI beat for media companies. </span></p>
<p><span>Your role includes generating story ideas on the beat, reporting on the news of the day, and investigating deeper stories. </span></p>
<p><span>Knowledge of SEO writing and keyword research is an asset, especially if the role is specifically for digital platforms and social media. You must be passionate about all things related to AI. It also helps to have connections in the AI industry and have enough technical knowledge to understand the lingo and be able to translate it to a lay audience.</span></p>
<h3 id="toc-cd8w-ai-teacher"><span>9. AI teacher</span></h3>
<figure class="post_image"><a href="https://elements.envato.com/group-of-university-students-in-a-circular-classro-BLB92JZ" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/988/posts/108501/image-upload/AI_Assisted_Teaching.jpg" alt="AI Assisted Teaching" loading="lazy" width="870px" height="587px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/988/posts/108501/image-upload/AI_Assisted_Teaching.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/988/posts/108501/image-upload/AI_Assisted_Teaching.jpg" alt="AI Assisted Teaching" loading="lazy" width="650px" height="440px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/988/posts/108501/image-upload/AI_Assisted_Teaching.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/988/posts/108501/image-upload/AI_Assisted_Teaching.jpg" alt="AI Assisted Teaching" loading="lazy" width="380px" height="260px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/988/posts/108501/image-upload/AI_Assisted_Teaching.jpg 2x"></a>
<figcaption>AI has opened up a new field of study. (<em>Image Source: <a href="https://elements.envato.com/group-of-university-students-in-a-circular-classro-BLB92JZ" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Envato</a></em>)</figcaption>
</figure>
<p>If you love teaching and you’re passionate about AI, then this job may be the perfect one for you. As the name implies, an AI teacher delivers classes about AI and how to use AI tools.</p>
<p>Many of these classes are delivered online. However, educational institutions are also hiring AI teachers for in-person, face-to-face classes.</p>
<p>This role covers lesson planning, developing curricula, designing training programs, and delivering classes. To succeed in this job, you need to stay on top of developments and trends in the AI industry. Classes on subjects like AI marketing tools are also in high demand. This is also a great path for those who are thinking about how to get a job in AI without a degree, especially if you enjoy breaking down complex ideas in a simplified way.</p>
<h3 id="toc-6lsc-ai-writer"><span>10. AI writer</span></h3>
<p><span>AI writers produce written content with the use of </span><a href="https://business.tutsplus.com/tutorials/ai-writing-tools-seo-content-businesses--cms-107928?_ga=2.160305338.687423277.1707494324-1337231014.1707494324"><span>AI tools for writing</span></a><span>. You could write blog posts, articles, website copy, marketing materials, and everything in between. You’ll need to be a good writer, of course. At the same time, you should know how to write effective prompts for GenAI to deliver the tone, style, and content you’re looking for. Research skills and SEO copywriting are important skills to have for this job as well.</span></p>
<p><span>This is just a snapshot of emerging AI jobs for creative professionals. The AI job landscape is dynamic and exciting. Increasing applications of artificial intelligence will create new jobs, many of which we can't even imagine. And opportunities aren’t only for programmers, user interface designers, and data scientists. There will continue to be a demand for creative professionals who want to be at the intersection of innovation, storytelling, and imagination.</span></p>
<h2 id="toc-16mh-learn-more-about-ai"><span>Learn more about AI</span></h2>
<p><span>Speaking of learning more about AI through online resources, did you know that we've got many posts about AI? Here are a few to get started with:</span></p>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://business.tutsplus.com/articles/what-is-artificial-intelligence--cms-108296"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2533/posts/108296/preview_image/preview.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2533/posts/108296/preview_image/preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2533/posts/108296/preview_image/preview.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2533/posts/108296/preview_image/preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2533/posts/108296/preview_image/preview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2533/posts/108296/preview_image/preview.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is Artificial Intelligence (AI) With Examples</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2533/profiles/21051/profileImage/IMG_5745.jpeg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2533/profiles/21051/profileImage/IMG_5745.jpeg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2533/profiles/21051/profileImage/IMG_5745.jpeg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2533/profiles/21051/profileImage/IMG_5745.jpeg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2533/profiles/21051/profileImage/IMG_5745.jpeg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2533/profiles/21051/profileImage/IMG_5745.jpeg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Sarah Joy</div>
<div class="roundup-block__published-date">14 Dec 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://business.tutsplus.com/articles/best-ai-tools-for-business--cms-106891"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2777/posts/106891/preview_image/preview_ai_tools_for_business.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2777/posts/106891/preview_image/preview_ai_tools_for_business.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2777/posts/106891/preview_image/preview_ai_tools_for_business.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2777/posts/106891/preview_image/preview_ai_tools_for_business.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2777/posts/106891/preview_image/preview_ai_tools_for_business.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2777/posts/106891/preview_image/preview_ai_tools_for_business.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">13 Best Artificial Intelligence (AI) Tools For Business: Pros and Cons</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Janila Castañeda</div>
<div class="roundup-block__published-date">18 Apr 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/best-ai-tips-and-tricks-for-creatives--cms-108067"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/48/posts/108067/preview_image/ai_tips.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/48/posts/108067/preview_image/ai_tips.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/48/posts/108067/preview_image/ai_tips.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/48/posts/108067/preview_image/ai_tips.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/48/posts/108067/preview_image/ai_tips.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/48/posts/108067/preview_image/ai_tips.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Best AI Tips and Tricks for Creatives</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Maria Villanueva</div>
<div class="roundup-block__published-date">26 Oct 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://business.tutsplus.com/articles/what-is-responsible-ai--cms-107566"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2777/posts/107566/preview_image/preview_resposable_ai_copy.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2777/posts/107566/preview_image/preview_resposable_ai_copy.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2777/posts/107566/preview_image/preview_resposable_ai_copy.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2777/posts/107566/preview_image/preview_resposable_ai_copy.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2777/posts/107566/preview_image/preview_resposable_ai_copy.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2777/posts/107566/preview_image/preview_resposable_ai_copy.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is Responsible AI? 6 Key Aspects You Should Consider</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2777/profiles/21301/profileImage/Foto-Jan-BN%20(1).jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Janila Castañeda</div>
<div class="roundup-block__published-date">10 Aug 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://business.tutsplus.com/articles/top-new-ai-trends--cms-108382"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2467/posts/108382/preview_image/ai_trends_preview.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2467/posts/108382/preview_image/ai_trends_preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2467/posts/108382/preview_image/ai_trends_preview.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2467/posts/108382/preview_image/ai_trends_preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2467/posts/108382/preview_image/ai_trends_preview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2467/posts/108382/preview_image/ai_trends_preview.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">10 top new AI trends to watch for 2025</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2467/profiles/20986/profileImage/alexis-rodrigo-400x400.JPG" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2467/profiles/20986/profileImage/alexis-rodrigo-400x400.JPG 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2467/profiles/20986/profileImage/alexis-rodrigo-400x400.JPG" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2467/profiles/20986/profileImage/alexis-rodrigo-400x400.JPG 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2467/profiles/20986/profileImage/alexis-rodrigo-400x400.JPG" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2467/profiles/20986/profileImage/alexis-rodrigo-400x400.JPG 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Alexis (Lexi) Rodrigo</div>
<div class="roundup-block__published-date">16 Oct 2024</div>
</div>
</div>
</div>
</div></a></li>
</ul>
<p><span>There’s plenty more, so feel free to explore the site for other AI-related articles and tutorials.</span></p>
<h2 id="toc-zo3o-get-your-job-search-ai-reading-with-envato-elements"><span>Get your AI job search going with Envato </span></h2>
<p>AI is an exciting industry to work in, and you’ll want to have every advantage possible over other job candidates. Envato has everything you need to create outstanding job applications that'll get the attention of recruiters.</p>
<p>Regardless of whether you're building a portfolio, crafting a resume, or writing a cover letter, <a href="https://elements.envato.com/?clickid=VbQx3x3r3xycUuwT3cQBk1C5Ukp0uGUuq1B8zg0&amp;gad_source=1&amp;gad_campaignid=22082346669&amp;gbraid=0AAAAAq-Yz4_MSBc7rZ7Q9DqYGnChlNFRJ&amp;gclid=Cj0KCQjws4fEBhD-ARIsACC3d2_fsBfXg7IQOI0G6g_nNWcLXKtFnkhtURHd5-LaeFnOEIxf8V9rRmwaAhmIEALw_wcB" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Envato</a> has everything you require in one place. Utilize professionally designed templates and enhance them with high-quality icons, fonts, images, videos, and audio effects. All of that is included in one convenient subscription with one license that covers personal and commercial use. You can use these assets for your creative work, including your AI projects, without limitation.</p>
<p><a class="call-to-action-btn call-to-action-btn-primary" href="https://elements.envato.com/graphic-templates/resume?ec_promo=post_cta&amp;ec_unit=primary" target="_self" rel="" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Find Creative Resumes</a></p>
<figure class="post_image"></figure>
<figure class="post_image"><a href="https://elements.envato.com/graphic-templates/resume?ec_promo=post_cta&amp;ec_unit=primary" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2533/posts/108501/image-upload/Envato_Resume.jpg" loading="lazy" width="870px" height="559px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2533/posts/108501/image-upload/Envato_Resume.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2533/posts/108501/image-upload/Envato_Resume.jpg" loading="lazy" width="650px" height="419px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2533/posts/108501/image-upload/Envato_Resume.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2533/posts/108501/image-upload/Envato_Resume.jpg" loading="lazy" width="380px" height="248px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2533/posts/108501/image-upload/Envato_Resume.jpg 2x"></a>
<figcaption>Find <a href="https://elements.envato.com/graphic-templates/resume?ec_promo=post_cta&amp;ec_unit=primary" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">resume templates</a> and more to start a new career in AI.</figcaption>
</figure>
<h2 id="toc-4ijt-your-exciting-career-in-ai-awaits"><span>Your exciting career in AI awaits</span></h2>
<p><span>As AI pervades every area of our lives, more and more careers in AI are created. And jobs in AI aren't just for computer programmers, engineers, and data scientists. There are also plenty of roles for creative professionals. AI careers for creatives include using AI tools for creative work such as writing, art, and music. Platforms and companies dedicated to producing content about AI also require the skills of writers, artists, graphic designers, and other creative professionals. Beyond all this, creative skills are needed to train AI and make AI more effective.</span></p>
<p><span>By now, you've got a better idea of how to get a job in AI. You know some of the things you can do to stand out as an ideal candidate for an AI job. Develop the skills you need, including some programming languages, to get an advantage. Stay updated on AI developments. And build a network of contacts in the AI industry.</span></p>
<p><span>Another important part of your job-finding toolbox is an impressive portfolio that showcases both your creativity and technical know-how. With the help of the <a href="https://elements.envato.com/graphic-templates/resume" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">templates and creative assets</a> in Envato, you can produce an AI-focused portfolio, cover letter, resume, and other application documents. These will help you stand out from other applicants, make a good first impression, and wow recruiters.</span></p>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/108501/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108501/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108501/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108501/a2t.img" width="1" /></div></content>
<published>2025-08-07 09:05:00 UTC</published>
<updated>2025-08-07 09:05:00 UTC</updated>
<author>
<name>Alexis (Lexi) Rodrigo</name>
</author>
</entry>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/cms-108355</id>
<published>2024-01-07T20:53:08+00:00</published>
<link rel="alternate" type="text/html" href="https://design.tutsplus.com/articles/midjourney-vs-stable-diffusion-ai-image-generators--cms-108355"/>
<title>Midjourney vs. Stable Diffusion: AI Image Generators</title>
<content type="html"><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ic0e">
<p>Which of the <a href="https://labs.envato.com/image-gen" target="_blank" rel="noopener">AI art generators </a>is better: Midjourney or Stable Diffusion? Both these AI art generators are amazing at transforming text prompts into eye-catching art. However, to help you choose the best tool for your artistic needs, we need to analyze factors like pricing models, image sizes, customization, and more.</p>
<p>In this article, we will round up the key features of Stable Diffusion vs. MidJourney and weigh the strengths and weaknesses of these powerful AI image generation models.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_01b_by_MissChatz.jpg" alt="User Interfaces of MidJourney and Stable Diffusion" loading="lazy" width="870px" height="781px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_01b_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_01b_by_MissChatz.jpg" alt="User Interfaces of MidJourney and Stable Diffusion" loading="lazy" width="650px" height="584px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_01b_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_01b_by_MissChatz.jpg" alt="User Interfaces of MidJourney and Stable Diffusion" loading="lazy" width="380px" height="342px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_01b_by_MissChatz.jpg 2x"></figure>
</div><div data-content-block-type="TableOfContents" class="content-block content-block-tableofcontents">
<div data-content-block-type="ContentTextBlock" class="content-block content-block-contenttextblock" id="i4mc"><p>Jump to content in this section:</p></div>
<ul class="visual-toc-list toc-ordered-list visual-toc__regular-theme div-container visual-toc-list__overflow visual-toc-list__unequal-split" start="0">
<li class="toc-item-title"><a href="#toc-am9j-what-is-midjourney"><span class="visual-toc__heading-title content-container">What Is MidJourney?</span></a></li>
<li class="toc-item-title"><a href="#toc-xmjr-what-is-midjourney"><span class="visual-toc__heading-title content-container">What Is Stable Diffusion?</span></a></li>
<li class="toc-item-title"><a href="#toc-5g26-what-is-the-cost-of-midjourney-vs-stable-diffusion"><span class="visual-toc__heading-title content-container">What Is the Cost of Midjourney vs. Stable Diffusion?</span></a></li>
<li class="toc-item-title"><a href="#toc-5u2k-what-are-the-key-features-of-midjourney-vs-stable-diffusion"><span class="visual-toc__heading-title content-container">What Are the Key Features of Midjourney vs. Stable Diffusion?</span></a></li>
<li class="toc-item-title"><a href="#toc-ibug-what-are-the-pros-and-cons-of-midjourney-vs-stable-diffusion-for-ai-image-generation"><span class="visual-toc__heading-title content-container">What Are the Pros and Cons of Midjourney vs. Stable Diffusion for AI Image Generation?</span></a></li>
<li class="toc-item-title"><a href="#toc-uhud-how-to-choose-the-best-ai-generator-model-for-your-work"><span class="visual-toc__heading-title content-container">How to Choose the Best AI Generator Model</span></a></li>
</ul>
</div><div data-content-block-type="Wysi" id="i9vof" class="content-block-content-block-wysi content-block">
<h2 id="toc-tazs-what-youll-learn">What You'll Learn</h2>
<ul>
<li>What is Midjourney?</li>
<li>What is Stable Diffusion?</li>
<li>What is the cost of Midjourney vs. Stable Diffusion?</li>
<li>What are the key features of MidJourney vs Stable Diffusion?</li>
<li>What are the pros and cons of Midjourney vs. Stable Diffusion for AI image generation?</li>
<li>How to choose the best AI generator model for your work</li>
</ul>
<h2 id="toc-am9j-what-is-midjourney">
<span class="sectionnum">1.</span> What Is MidJourney?</h2>
<p><a href="https://www.midjourney.com" target="_blank" rel="noopener">Midjourney</a> is an AI art generator founded in San Francisco, California, by David Holz. It entered into open beta in July 2022. Midjourney is a text-to-image AI image generator known for adapting basic art styles and generating remarkably vivid images.</p>
<p>Midjourney is a machine-learning model that allows users to generate images based on text prompts.</p>
<figure class="post_image"><a href="https://www.midjourney.com/" target="_blank" rel="noopener"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_00_by_MissChatz.jpg" alt="Midjourney landing page" loading="lazy" width="870px" height="368px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_00_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_00_by_MissChatz.jpg" alt="Midjourney landing page" loading="lazy" width="650px" height="278px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_00_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_00_by_MissChatz.jpg" alt="Midjourney landing page" loading="lazy" width="380px" height="167px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_00_by_MissChatz.jpg 2x"></a></figure>
<h3 id="toc-iw7f-1-how-to-access-midjourney">1.1 How to Access Midjourney</h3>
<h4 id="toc-3ipl-step-1">Step 1</h4>
<p>Wondering how to use Midjourney? Currently, Midjourney is only accessible through the Discord chat app. To get started with it, you will need to create a <a href="https://discord.com/" target="_blank" rel="noopener">Discord</a> account. Once you've done that, head over to <a href="https://www.midjourney.com/home" target="_blank" rel="noopener">Midjourney</a>'s landing page and <strong>Sign In </strong>with your Discord account.</p>
<figure class="post_image"><a href="https://www.discord.com" target="_blank" rel="noopener"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_02b_by_MissChatz_copy.jpg" alt="Create Discord ID and sign in Midjourney landing page" loading="lazy" width="870px" height="943px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_02b_by_MissChatz_copy.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_02b_by_MissChatz_copy.jpg" alt="Create Discord ID and sign in Midjourney landing page" loading="lazy" width="650px" height="704px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_02b_by_MissChatz_copy.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_02b_by_MissChatz_copy.jpg" alt="Create Discord ID and sign in Midjourney landing page" loading="lazy" width="380px" height="411px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_02b_by_MissChatz_copy.jpg 2x"></a></figure>
<h4 id="toc-nqzu-step-2">Step 2</h4>
<p>To start generating images, you need to <strong>Purchase a subscription</strong> plan. After that, click on <strong>Community</strong> to connect to the Midjourney server.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_03e1_by_MissChatz.jpg" alt="Purchase a Midjourney Subscription plan and join the community" loading="lazy" width="870px" height="504px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_03e1_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_03e1_by_MissChatz.jpg" alt="Purchase a Midjourney Subscription plan and join the community" loading="lazy" width="650px" height="379px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_03e1_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_03e1_by_MissChatz.jpg" alt="Purchase a Midjourney Subscription plan and join the community" loading="lazy" width="380px" height="225px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_03e1_by_MissChatz.jpg 2x"></figure>
<h4 id="toc-nqzu-step-2">Step 3</h4>
<p>Midjourney has its own Discord server, so once you join the Midjourney <strong>Community</strong>, you will need to accept the Discord invitation by pressing the <strong>Accept Invite</strong> tab, to access and connect to the Midjourney server. When you've gained access to the server, you can enter one of the 'newbies' channels to start creating images.</p>
<p>Type in the <code>/imagine</code> command to get started, and enter a text prompt to generate the image you want.</p>
<p>If you'd like to know a little more about the process, you can check out this new article on <a href="https://design.tutsplus.com/" target="_blank" rel="noopener">Envato Tuts+</a>:</p>
<ul class="roundup-block__contents posts--half-width roundup-block--list"><li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/what-is-midjourney--cms-107412"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is Midjourney?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Abbey Esparza</div>
<div class="roundup-block__published-date">14 Nov 2023</div>
</div>
</div>
</div>
</div></a></li></ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_04b_by_MissChatz_copy.jpg" alt="Accept Invite from Discord and add text prompt to MidJourney bot under newbies server" loading="lazy" width="870px" height="987px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_04b_by_MissChatz_copy.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_04b_by_MissChatz_copy.jpg" alt="Accept Invite from Discord and add text prompt to MidJourney bot under newbies server" loading="lazy" width="650px" height="737px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_04b_by_MissChatz_copy.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_04b_by_MissChatz_copy.jpg" alt="Accept Invite from Discord and add text prompt to MidJourney bot under newbies server" loading="lazy" width="380px" height="430px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_04b_by_MissChatz_copy.jpg 2x"></figure>
<h2 id="toc-xmjr-what-is-midjourney">
<span class="sectionnum">2. </span>What Is Stable Diffusion?</h2>
<p>Stable Diffusion is an AI image generator model that was developed and released by <a href="https://stability.ai/" target="_blank" rel="noopener">Stability AI</a> on 22 August 2022. This tool was built to convert textual prompts into visual outputs, using algorithms based on machine learning, state-of-the-art deep learning, computer vision, and natural language descriptions.</p>
<p>Stable Diffusion can produce a multitude of artistic styles, ranging from anime to photorealistic art, in a matter of seconds. </p>
<figure class="post_image"><a href="https://stability.ai/" target="_blank" rel="noopener"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_05_by_MissChatz.jpg" alt="Stablity AI landing page featuring Stable Diffusion XL and SDXL Turbo " loading="lazy" width="870px" height="493px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_05_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_05_by_MissChatz.jpg" alt="Stablity AI landing page featuring Stable Diffusion XL and SDXL Turbo " loading="lazy" width="650px" height="371px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_05_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_05_by_MissChatz.jpg" alt="Stablity AI landing page featuring Stable Diffusion XL and SDXL Turbo " loading="lazy" width="380px" height="220px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_05_by_MissChatz.jpg 2x"></a></figure>
<h3 id="toc-7wej-1-how-to-access-stable-diffusion">2.1 How to Access Stable Diffusion</h3>
<p>If you're wondering how to access Stable Diffusion, you should know that Stable Diffusion is entirely open-source and free for commercial and non-commercial use. The software allows everyone to access it, modify it, and use it.</p>
<p>There are several ways users can gain access to Stable Diffusion. One is by installing the <a href="https://stablediffusionweb.com/app" target="_blank" rel="noopener">mobile app</a> Dreamer<strong>.</strong> Another method is through the web app <a href="https://stablediffusionweb.com/" target="_blank" rel="noopener">Stable Diffusion Web</a>, and there are several other ways, both online or offline, by installing the software to a hard drive.</p>
<p>To find out more ways to use Stable Diffusion, check out this article:</p>
<ul class="roundup-block__contents posts--half-width roundup-block--list"><li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/what-is-stable-diffusion--cms-92996"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is Stable Diffusion?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">MissChatz</div>
<div class="roundup-block__published-date">06 Jan 2024</div>
</div>
</div>
</div>
</div></a></li></ul>
<figure class="post_image"><a href="https://stablediffusionweb.com/app" target="_blank" rel="noopener"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_06_by_MissChatz.jpg" alt="Dreamer App for Google Play and App store to access Stable Diffusion XL" loading="lazy" width="870px" height="561px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_06_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_06_by_MissChatz.jpg" alt="Dreamer App for Google Play and App store to access Stable Diffusion XL" loading="lazy" width="650px" height="421px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_06_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_06_by_MissChatz.jpg" alt="Dreamer App for Google Play and App store to access Stable Diffusion XL" loading="lazy" width="380px" height="249px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_06_by_MissChatz.jpg 2x"></a></figure>
<h2 id="toc-5g26-what-is-the-cost-of-midjourney-vs-stable-diffusion">
<span class="sectionnum">3. </span>What Is the Cost of Midjourney vs. Stable Diffusion?</h2>
<h3 id="toc-mrlr-what-is-the-cost-of-midjourney">3.1 What Is the Cost of Midjourney?</h3>
<p>Is Midjourney free? Midjourney has moved from offering free trials to being a tiered paid service. A Midjourney subscription offers a limited number of hours for free image generation each month. For example, a <strong>Basic Plan</strong> subscription is billed annually at $96 ($8/month) and allows 3.3 hours/month. A <strong>Mega Plan</strong> annual subscription cost is set at $1,152 ($96/month) and offers 60hours/month. </p>
<p>Here's a look at the current Midjourney prices and subscription plans available for <strong>Basic</strong>, <strong>Standard</strong>, <strong>Pro</strong>, and <strong>Mega</strong>:</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_07_by_MissChatz.jpg" alt="Cost of MidJourney and Monthly and Annually Subscription tiers " loading="lazy" width="870px" height="913px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_07_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_07_by_MissChatz.jpg" alt="Cost of MidJourney and Monthly and Annually Subscription tiers " loading="lazy" width="650px" height="682px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_07_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_07_by_MissChatz.jpg" alt="Cost of MidJourney and Monthly and Annually Subscription tiers " loading="lazy" width="380px" height="398px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_07_by_MissChatz.jpg 2x"></figure>
<h3 id="toc-2smm-what-is-the-cost-of-stable-diffusion">3.2 What Is the Cost of Stable Diffusion?</h3>
<p>Stable Diffusion is currently free and also offers a paid credit plan for its software, starting at $29. Users can access its free basic features without needing licensing or subscription fees. The free version of Stable Diffusion allows users to perform limited edits and experiment with art styles. On the other hand, if you are looking for advanced image editing or processing, you will need to subscribe to a Premium Plan.</p>
<p>Stable Diffusion offers three pricing plans: <strong>Basic</strong>, <strong>Standard</strong>, and <strong>Premium</strong>. They are different in features, speed, cost, and capabilities.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_08_by_MissChatz.jpg" alt="Stable Diffusion Pricing Plans Basic Standard and Premium" loading="lazy" width="870px" height="813px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_08_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_08_by_MissChatz.jpg" alt="Stable Diffusion Pricing Plans Basic Standard and Premium" loading="lazy" width="650px" height="608px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_08_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_08_by_MissChatz.jpg" alt="Stable Diffusion Pricing Plans Basic Standard and Premium" loading="lazy" width="380px" height="356px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_08_by_MissChatz.jpg 2x"></figure>
<h2 id="toc-5u2k-what-are-the-key-features-of-midjourney-vs-stable-diffusion">
<span class="sectionnum">4. </span>What Are the Key Features of Midjourney vs. Stable Diffusion? </h2>
<p>Midjourney and Stable Diffusion are both powerful AI image generators. Let's take a look at the key features and benefits of Stable Diffusion vs. Midjourney by comparing image quality, accessibility, ownership, and customization options.</p>
<h3 id="toc-d9cp-image-quality">Image Quality</h3>
<ul>
<li>Midjourney creates high-quality images up to 1024 x 1024 pixels.</li>
<li>Midjourney's generated images have more aesthetics and finer details.</li>
<li>The tool requires minimal effort and a fast rate of one minute of GPU time to produce high-quality images.</li>
<li>By default, Stable Diffusion creates images up to 512 x 512 resolution and can go up to 4096 x 4096.</li>
<li>Stable Diffusion offers an array of artistic styles from photorealistic to pixel art, so users get more creativity and diversity when generating images.</li>
<li>Midjourney image formats are JPEG and PNG. </li>
<li>Stable Diffusion formats are PNG, JPEG, and GIF.</li>
</ul>
<h3 id="toc-3ffx-user-interface">User Interface</h3>
<ul>
<li>Midjourney is accessed through an internet connection and a Discord account.</li>
<li>Stable Diffusion can be accessed through various frameworks, online/offline, on a mobile app, and on your computer's hard drive.</li>
</ul>
<h3 id="toc-luvf-ownership">Copyright/Ownership</h3>
<p>Both Midjourney and Stable Diffusion allow you ownership of the images you create, with no branding or watermark. However, with Midjourney, it depends on which paid tier you have, as you have more rights with higher tiers. </p>
<p>Stable Diffusion, on the other hand, claims no rights to the images generated and allows users to distribute and sell their AI images. For further information, read their license and terms.</p>
<h3 id="toc-luvf-ownership">Customization</h3>
<p>Stable Diffusion has more flexibility and customization when it comes to art styles, image size, negative prompts, adjusting the prompt parameters, and the number of images generated.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_09a_by_MissChatz.jpg" alt="stable diffusion web image generator User interface customization" loading="lazy" width="870px" height="554px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_09a_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_09a_by_MissChatz.jpg" alt="stable diffusion web image generator User interface customization" loading="lazy" width="650px" height="416px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_09a_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_09a_by_MissChatz.jpg" alt="stable diffusion web image generator User interface customization" loading="lazy" width="380px" height="246px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_09a_by_MissChatz.jpg 2x"></figure>
<h2 id="toc-ibug-what-are-the-pros-and-cons-of-midjourney-vs-stable-diffusion-for-ai-image-generation">
<span class="sectionnum">5. </span>What Are the Pros and Cons of Midjourney vs. Stable Diffusion for AI Image Generation?</h2>
<p>Both AI art generators have their strengths and weaknesses. Let's take a quick look at the pros and cons and how to use Midjourney and Stable Diffusion.</p>
<h3 id="toc-6v78-midjourney">5.1 Midjourney</h3>
<h4 id="toc-und3-advantages">Advantages </h4>
<ul>
<li>Has an active community.</li>
<li>Produces high-quality images, with details.</li>
<li>Has a reasonable subscription price.</li>
<li>You can browse other users' generated images.</li>
<li>Use Midjourney when you need high-quality images with intricate details or photorealistic images.</li>
<li>It's a great AI generator for creating stunning backdrops and backgrounds, fantasy-themed images, sci-fi content, powerful scenes, or images with dramatic lighting.</li>
<li>Use Midjourney for video games.</li>
</ul>
<h4 id="toc-tnd6-disadvantages">Disadvantages</h4>
<ul>
<li>More complicated to use.</li>
<li>Lots of users on the platform, so your image generations get buried under other generations.</li>
<li>Requires a Discord account.</li>
<li>Paid-only platform.</li>
<li>Midjourney cost based on subscription tiers.</li>
<li>There is no privacy—your creations can be viewed and downloaded by other users on the server.</li>
<li>Offers a few customizable models.</li>
<li>Requires a commercial license.</li>
</ul>
<h3 id="toc-3hq2-midjourney">5.2 Stable Diffusion</h3>
<h4 id="toc-se31-advantages">Advantages </h4>
<ul>
<li>High image quality.</li>
<li>You have more control over the customization of image parameters.</li>
<li>Offers a broader range of art styles for its users.</li>
<li>Has a user-friendly interface and is an easy-to-use image generator.</li>
<li>Free to experiment with.</li>
<li>Stable Diffusion has thousands of AI models available for download.</li>
<li>Allows users to create their own AI models by training them with their own images, which is not available on Midjourney.</li>
<li>Free for non-commercial use, and commercial licenses are available.</li>
<li>Stable Diffusion is great for industries that are focused on content creation, virtual content, or digital marketing.</li>
<li>Go for Stable Diffusion when you need images for e-commerce, scientific research, product design, or digital art creation.</li>
<li>Use Stable Diffusion to create gaming assets, cover art, backgrounds, characters, etc.</li>
<li>Freelancers or beginners can access the free version, but professionals should get the paid version without limitations.</li>
</ul>
<h4 id="toc-r17h-disadvantages">Disadvantages</h4>
<ul>
<li>Requires more technical knowledge and expertise to achieve fine-grained image results.</li>
<li>Paid versions run out of credit.</li>
</ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_10_by_MissChatz.jpg" alt="Midjourney vs Stable Diffusion Render sample" loading="lazy" width="870px" height="489px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_10_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_10_by_MissChatz.jpg" alt="Midjourney vs Stable Diffusion Render sample" loading="lazy" width="650px" height="368px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_10_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_10_by_MissChatz.jpg" alt="Midjourney vs Stable Diffusion Render sample" loading="lazy" width="380px" height="219px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_10_by_MissChatz.jpg 2x"></figure>
<h2 id="toc-uhud-how-to-choose-the-best-ai-generator-model-for-your-work">
<span class="sectionnum">6.</span> How to Choose the Best AI Generator Model</h2>
<p>When choosing which AI generator is the best for your work, it comes down to your individual preferences and needs. You should consider factors like what type of images you want to create, how much control you want to have over customization, your budget, and your comfort level in using the technology.</p>
<p><strong>For beginners</strong>: Midjourney shines with the Discord interface and minimal customization, making it a gentle dip into the AI art pool. Stable Diffusion, while offering deeper control, demands steeper technical learning to obtain finer results.</p>
<p><strong>Cost considerations</strong>: Midjourney starts with a paid subscription, while Stable Diffusion boasts a free downloadable version. However, the premium features on both platforms come with additional costs.</p>
<p><strong>Copyright quandaries</strong>: Both platforms have evolving copyright guidelines. Midjourney retains commercial rights, while Stable Diffusion allows personal and non-commercial use with proper attribution.</p>
<p><strong>Exploring the depths</strong>: Midjourney excels at generating unique, dreamlike compositions, while Stable Diffusion offers precise control over existing images with tools like inpainting and outpainting.</p>
<p><strong>The ultimate test</strong>: Consider your needs. Do you value ease and quick bursts of inspiration? Midjourney might be your muse. Do you crave meticulous control and endless tinkering? Stable Diffusion awaits your sculpting touch.</p>
<p>Ultimately, the best AI tool is the one that sparks your creative fire. So dive in, experiment with both, and let your digital dreams take flight!</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_11_by_MissChatz.jpg" alt="Comparison of midjourney rendering vs Stable Diffusion" loading="lazy" width="870px" height="489px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_11_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_11_by_MissChatz.jpg" alt="Comparison of midjourney rendering vs Stable Diffusion" loading="lazy" width="650px" height="368px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_11_by_MissChatz.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_11_by_MissChatz.jpg" alt="Comparison of midjourney rendering vs Stable Diffusion" loading="lazy" width="380px" height="219px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/image-upload/Tut_3319_Midjourney_VS_StableDiffusion_11_by_MissChatz.jpg 2x"></figure>
<h2 id="toc-nlpn-learn-more-about-ai-image-generation">Learn More About AI Image Generation</h2>
<p>Would you like to learn more about Midjourney, Stable Diffusion, and alternative AI image generators? Check out these articles from Envato Tuts+:</p>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/what-is-midjourney--cms-107412"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is Midjourney?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Abbey Esparza</div>
<div class="roundup-block__published-date">14 Nov 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/what-is-stable-diffusion--cms-92996"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is Stable Diffusion?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">MissChatz</div>
<div class="roundup-block__published-date">06 Jan 2024</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/what-is-dall-e--cms-107387"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107387/preview_image/preview_template_s2.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107387/preview_image/preview_template_s2.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107387/preview_image/preview_template_s2.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107387/preview_image/preview_template_s2.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/posts/107387/preview_image/preview_template_s2.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/posts/107387/preview_image/preview_template_s2.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is DALL-E?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Abbey Esparza</div>
<div class="roundup-block__published-date">02 Jul 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/what-is-adobe-firefly--cms-107179"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is Adobe Firefly?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Ashlee Harrell</div>
<div class="roundup-block__published-date">18 Sep 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/can-ai-work-for-designers-or-should-we-fear-it--cms-107595"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107595/preview_image/preview_template.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107595/preview_image/preview_template.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107595/preview_image/preview_template.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107595/preview_image/preview_template.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/posts/107595/preview_image/preview_template.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/posts/107595/preview_image/preview_template.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Can AI Work for Designers? Or Should We Fear It?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Abbey Esparza</div>
<div class="roundup-block__published-date">03 Aug 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/cool-ai-generated-product-mockups--cms-107500"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1631/posts/107500/preview_image/AIGeneratedMockup_007_Preview.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1631/posts/107500/preview_image/AIGeneratedMockup_007_Preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1631/posts/107500/preview_image/AIGeneratedMockup_007_Preview.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1631/posts/107500/preview_image/AIGeneratedMockup_007_Preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1631/posts/107500/preview_image/AIGeneratedMockup_007_Preview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1631/posts/107500/preview_image/AIGeneratedMockup_007_Preview.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">36 Cool AI Generated Product Mockups</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1631/profiles/20139/profileImage/NB.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1631/profiles/20139/profileImage/NB.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1631/profiles/20139/profileImage/NB.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1631/profiles/20139/profileImage/NB.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1631/profiles/20139/profileImage/NB.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1631/profiles/20139/profileImage/NB.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Nona Blackman</div>
<div class="roundup-block__published-date">21 Jul 2023</div>
</div>
</div>
</div>
</div></a></li>
</ul>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/108355/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108355/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108355/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108355/a2t.img" width="1" /></div></content>
<published>2025-08-01 22:24:17 UTC</published>
<updated>2025-08-01 22:24:17 UTC</updated>
<author>
<name>MissChatz</name>
</author>
</entry>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/cms-107499</id>
<published>2023-07-12T10:34:06+00:00</published>
<link rel="alternate" type="text/html" href="https://photography.tutsplus.com/articles/10-best-ai-photo-generators-to-make-stock-images-fast-in-2023--cms-107499"/>
<title>10+ Best AI Photo Generators to Make Stock Images Fast in 2025</title>
<content type="html"><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="i7qh">
<p>AI generated images seem to be the thing on everyone’s lips at the moment, whether that’s discussing if AI generated visuals can really be ‘photography,’ or how realistic they are. What isn’t in doubt, is how powerful <a href="https://labs.envato.com/image-gen" target="_blank" rel="noopener">AI stock photos</a> can be when it comes to specific purposes like graphic design, marketing, content creation, and of course, stock photography. In this article, we look at the 10 best AI photo generators to make stock images fast in 2024.</p>
<h2 id="toc-50a6-10-best-ai-photo-generators-to-make-stock-images-fast-in-2023">10+ Best AI Image Generators to Make Stock Images Fast in 2025</h2>
<h3 id="toc-9e2q-midjourney">1. <span><u>Midjourney</u></span>
</h3>
<p><a href="https://www.midjourney.com/" target="_self">Midjourney</a> has definitely been one of the most talked about AI picture generators. Currently in open beta, users type in a prompt that returns a set of four images. Each of those can then either be upscaled or used as a base to create further, similar images.</p>
<h4 id="toc-2npz-quick-look">Quick Look</h4>
<p><strong>Pricing</strong></p>
<p><strong>The pricing here based on paying for a year (with a 20% discount)</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Tier</strong></p>
</td>
<td>
<p><strong>Cost and What you get</strong></p>
</td>
</tr>
<tr>
<td>
<p>Free</p>
</td>
<td>
<p>No longer exists unfortunately, aside from the occasional promotion.</p>
</td>
</tr>
<tr>
<td>
<p>Basic</p>
</td>
<td>
<p>$96 – 3.3 hours per month, 3 jobs at once, 10 jobs waiting in the queue.</p>
</td>
</tr>
<tr>
<td>
<p>Standard</p>
</td>
<td>
<p>$288 – as above but with 15 hours per month and unlimited relax GPU time.</p>
</td>
</tr>
<tr>
<td>
<p>Pro</p>
</td>
<td>
<p>$576 – as above but with 30 hours per month, 12 fast jobs, and 3 relaxed jobs, and the addition of ‘stealth’ mode.</p>
</td>
</tr>
<tr>
<td>
<p>Mega</p>
</td>
<td>
<p>$1152 – as above but with 60 hours per month.</p>
</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Pros</strong></p>
</td>
<td>
<p>It’s very good and getting better with every release, the results are high quality and realistic.</p>
</td>
</tr>
<tr>
<td>
<p><strong>Cons</strong></p>
</td>
<td>
<p>Currently only available through Discord, no longer any free use.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="toc-ja8a-nvidia-canvas">2. Adobe Express AI Image Generator</h3>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2827/posts/107499/image-upload/Adobe_AI.jpg" alt="Adobe Express Image Generator" loading="lazy" width="870px" height="461px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2827/posts/107499/image-upload/Adobe_AI.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2827/posts/107499/image-upload/Adobe_AI.jpg" alt="Adobe Express Image Generator" loading="lazy" width="650px" height="347px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2827/posts/107499/image-upload/Adobe_AI.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2827/posts/107499/image-upload/Adobe_AI.jpg" alt="Adobe Express Image Generator" loading="lazy" width="380px" height="207px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2827/posts/107499/image-upload/Adobe_AI.jpg 2x"></figure>
<p><a href="https://www.adobe.com/products/firefly/features/text-to-image.html" target="_self">Adobe Express AI Image Generator</a> is a powerful tool designed for creating stock-quality images with ease. Part of the Adobe family, this generator is seamlessly integrated into Adobe Express, making it ideal for professionals and beginners alike.</p>
<h4 id="toc-bpwa-quick-look">Quick Look</h4>
<p><strong>Pricing</strong></p>
<p>Adobe Express AI Image Generator is available as part of Adobe Express plans, starting at $9.99 per month.</p>
<table>
<tbody>
<tr>
<td>
<p><strong>Tier</strong></p>
</td>
<td>
<p><strong>Cost and What you get</strong></p>
</td>
</tr>
<tr>
<td>
<p>Free</p>
</td>
<td>
<p>Limited access to basic tools, perfect for experimenting with the platform.</p>
</td>
</tr>
<tr>
<td>
<p>Premium</p>
</td>
<td>
<p>$9.99/month – Includes full access to the AI Image Generator, unlimited downloads, and advanced customization options.</p>
</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Pros</strong></p>
</td>
<td>
<p>Easy to use, even for beginners. Integration with the Adobe Creative Suite for enhanced functionality. Fast and reliable, with professional-quality results.</p>
</td>
</tr>
<tr>
<td>
<p><strong>Cons</strong></p>
</td>
<td>
<p>Advanced features are only available with a subscription. Limited free tier access.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="toc-t0w3-nvidia-canvas">3. <span><u>NVIDIA Canvas</u></span>
</h3>
<figure class="post_image"><a href="https://www.nvidia.com/en-gb/studio/canvas/"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/412/posts/107499/image-upload/2_nvidia_GAN_paint_studio.jpg" alt="NVIDIA Paint Studio" loading="lazy" width="870px" height="499px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/412/posts/107499/image-upload/2_nvidia_GAN_paint_studio.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/412/posts/107499/image-upload/2_nvidia_GAN_paint_studio.jpg" alt="NVIDIA Paint Studio" loading="lazy" width="650px" height="375px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/412/posts/107499/image-upload/2_nvidia_GAN_paint_studio.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/posts/107499/image-upload/2_nvidia_GAN_paint_studio.jpg" alt="NVIDIA Paint Studio" loading="lazy" width="380px" height="223px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/posts/107499/image-upload/2_nvidia_GAN_paint_studio.jpg 2x"></a></figure>
<p><a href="https://www.nvidia.com/en-gb/studio/canvas/" target="_self">NVIDIA Canvas </a>doesn’t use text prompts. Instead, you paint rough shapes and lines onto a canvas, and the AI generator will fill the screen with realistic interpretations. You can swap out different elements and customise your image with a variety of styles and options available.</p>
<h4 id="toc-p3l5-quick-look">Quick Look</h4>
<p><strong>Pricing</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Tier</strong></p>
</td>
<td>
<p><strong>Cost and What you get</strong></p>
</td>
</tr>
<tr>
<td>
<p>Free</p>
</td>
<td>
<p>It’s free! You get everything, but you do need certain things to run it (see ‘cons’).</p>
</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Pros</strong></p>
</td>
<td>
<p>It’s free and the results look great, you can use pre-designed elements and some very rudimentary artistic skills to get a pretty decent landscape.</p>
</td>
</tr>
<tr>
<td>
<p><strong>Cons</strong></p>
</td>
<td>
<p>It requires RTX Tensor Cores to function and is supported on GeForce RTX and NVIDIA RTX GPU, it’s not designed to create photographs of people, so its uses are limited.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="toc-8b8h-runwayml">4. <span><u>RunwayML</u></span>
</h3>
<figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=FUIqR1G9QV4&amp;t=0">
<iframe src="https://www.youtube.com/embed/FUIqR1G9QV4?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure>
<p><a href="https://runwayml.com/" target="_self">RunwayML</a> is a platform that provides a range of AI models, including AI generated images. It generates high-quality images via text prompts that you can then customise and ‘generate’ from 1 image up to a batch of 500, making it a powerful tool for creating stock images.</p>
<h4 id="toc-bpwa-quick-look">Quick Look</h4>
<p><strong>Pricing</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Tier</strong></p>
</td>
<td>
<p><strong>Cost and What you get</strong></p>
</td>
</tr>
<tr>
<td>
<p>Basic</p>
</td>
<td>
<p>Free forever, though that’s a slight misnomer given you can’t buy any more credits once your 125 freebies are gone. It also includes watermarks on your images and you can’t upscale.</p>
</td>
</tr>
<tr>
<td>
<p>Standard</p>
</td>
<td>
<p>$12 / month. More of everything, basically. You can buy credits, remove watermarks, and have up to 5 users, plus there are extra export options.</p>
</td>
</tr>
<tr>
<td>
<p>Pro</p>
</td>
<td>
<p>$28 / month. As above, but with full access to everything and up to 10 users.</p>
</td>
</tr>
<tr>
<td>
<p>Enterprise</p>
</td>
<td>
<p>Contact for a quote. Lots of ‘custom’ options which aren’t listed on the site.</p>
</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Pros</strong></p>
</td>
<td>
<p>Versatile – you get more than just an AI image generator. High quality, realistic images. Easy to use.</p>
</td>
</tr>
<tr>
<td>
<p><strong>Cons</strong></p>
</td>
<td>
<p>The free tier is limited and then it gets quite pricey. Although realistic in style, the photos themselves have been described as ‘surreal’ which may make them unsuitable for many stock image requirements.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="toc-jnak-artbreeder">5. <span><u>Artbreeder</u></span>
</h3>
<figure class="post_image"><a href="https://www.artbreeder.com/"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/412/posts/107499/image-upload/4_artbreeder.jpg" alt="Artbreeder" loading="lazy" width="870px" height="628px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/412/posts/107499/image-upload/4_artbreeder.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/412/posts/107499/image-upload/4_artbreeder.jpg" alt="Artbreeder" loading="lazy" width="650px" height="471px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/412/posts/107499/image-upload/4_artbreeder.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/posts/107499/image-upload/4_artbreeder.jpg" alt="Artbreeder" loading="lazy" width="380px" height="278px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/posts/107499/image-upload/4_artbreeder.jpg 2x"></a></figure>
<p><a href="https://www.artbreeder.com/" target="_self">Artbreeder</a> is an AI picture generator that lets you blend and evolve existing images into new artworks.</p>
<h4 id="toc-pvwk-quick-look">Quick Look</h4>
<p><strong>Pricing</strong></p>
<p><strong>You can save 20% on the cost if you are billed yearly.</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Tier</strong></p>
</td>
<td>
<p><strong>Cost and What you get</strong></p>
</td>
</tr>
<tr>
<td>
<p>Free</p>
</td>
<td>
<p>10 credits per month – no extras.</p>
</td>
</tr>
<tr>
<td>
<p>Starter</p>
</td>
<td>
<p>$8.99 – 100 credits per month and syncs with Google Drive and gives you privacy controls plus custom genes.</p>
</td>
</tr>
<tr>
<td>
<p>Advanced</p>
</td>
<td>
<p>$18.99/month – as above with 275 credits per month.</p>
</td>
</tr>
<tr>
<td>
<p>Champion</p>
</td>
<td>
<p>$38.99/month – as above but with 700 credits per month.</p>
</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Pros</strong></p>
</td>
<td>
<p>A fairly unique way of creating stock images. Wide range of styles to experiment with.</p>
</td>
</tr>
<tr>
<td>
<p><strong>Cons</strong></p>
</td>
<td>
<p>No privacy controls on the free tier – eek! Results are… unpredictable.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="toc-jndh-dall-e">6. <span><u>DALL-E</u></span>
</h3>
<figure class="post_image"><a href="https://openai.com/dall-e-2"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/412/posts/107499/image-upload/dalle.jpg" alt="DALL-E" loading="lazy" width="870px" height="571px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/412/posts/107499/image-upload/dalle.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/412/posts/107499/image-upload/dalle.jpg" alt="DALL-E" loading="lazy" width="650px" height="428px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/412/posts/107499/image-upload/dalle.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/posts/107499/image-upload/dalle.jpg" alt="DALL-E" loading="lazy" width="380px" height="253px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/posts/107499/image-upload/dalle.jpg 2x"></a></figure>
<p>Now in its second full release, <a href="https://openai.com/dall-e-2" target="_blank" rel="noopener">Dall-E 2 </a>creates images from a written prompt. Dall-E boasts that its images are original and realistic.</p>
<h4 id="toc-i7km-quick-look"><span><strong>Quick Look</strong></span></h4>
<p><strong>Pricing</strong></p>
<p><strong>The pricing for Dall-E AI picture generator is complicated. Here’s their summary:</strong></p>
<blockquote>
<p>“<strong>Multiple models, each with different capabilities and price points. Prices are per 1,000 tokens. You can think of tokens as pieces of words, where 1,000 tokens is about 750 words. This paragraph is 35 tokens.”</strong></p>
</blockquote>
<p><strong>Pros and Cons</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Pros</strong></p>
</td>
<td>
<p>Unique images. Good for stock images that need unusual prompts or unconventional ideas.</p>
</td>
</tr>
<tr>
<td>
<p><strong>Cons</strong></p>
</td>
<td>
<p>Complicated pricing. You need to get good at prompt writing to have usable results.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="toc-dnjl-dreamstudio">7. <span><u>DreamStudio</u></span>
</h3>
<figure class="post_image"><a href="https://dreamstudio.ai/generate"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/412/posts/107499/image-upload/dreamstudio_screenshot.jpg" alt="dream studio" loading="lazy" width="870px" height="520px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/412/posts/107499/image-upload/dreamstudio_screenshot.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/412/posts/107499/image-upload/dreamstudio_screenshot.jpg" alt="dream studio" loading="lazy" width="650px" height="391px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/412/posts/107499/image-upload/dreamstudio_screenshot.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/posts/107499/image-upload/dreamstudio_screenshot.jpg" alt="dream studio" loading="lazy" width="380px" height="232px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/posts/107499/image-upload/dreamstudio_screenshot.jpg 2x"></a></figure>
<p><a href="https://dreamstudio.ai/generate" target="_self">DreamStudio</a> boasts ‘effortless image generation for creators with big dreams’. As well as creating images from written prompts, you can expand, add and remove items from them too.</p>
<h4 id="toc-qy6i-quick-look">Quick Look</h4>
<p><strong>Pricing</strong></p>
<p><strong>DreamStudio works on a credit only system.</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Tier</strong></p>
</td>
<td>
<p><strong>Cost and What you get</strong></p>
</td>
</tr>
<tr>
<td>
<p>Free</p>
</td>
<td>
<p>You get 25 credits for creating an account, which is 30 images at the default setting and 50 images with the API’s default setting.</p>
</td>
</tr>
<tr>
<td>
<p>Credits</p>
</td>
<td>
<p>A minimum purchase of 1000 credits for $10 is required.</p>
</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Pros</strong></p>
</td>
<td>
<p>Credits don’t expire. Style choices are wide and include photo-realistic images.</p>
</td>
</tr>
<tr>
<td>
<p><strong>Cons</strong></p>
</td>
<td>
<p>It’s still in development so there might be some teething issues using it.</p>
</td>
</tr>
</tbody>
</table>
</div><div data-content-block-type="EmbedCourse" class="content-block content-block-embedcourse" id="iqch">
<div class="embed-course-details__wrapper div-container">
<div class="div-container">
<div class="embed-course-summary__wrapper content-container"> <div class="free-course__label">FREE</div>
<div class="embed-course__duration">
<i class="fa fa-clock-o far fa-clock"></i>
<span>12 Minutes</span>
</div>
</div>
<h2>How to Write Code With ChatGPT</h2>
</div>
<div class="embed-course__contents div-container">
<div class="embed-course__description" id="ixd7"><p>AI is revolutionizing the way developers write code. Learn how to write code with ChatGPT in this step-by-step tutorial.</p></div>
<ul class="embed-course__chapters-title-list"></ul>
</div>
</div>
<div class="embed-course-video__wrapper content-container"> <figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=sbfdzF8X-AQ&amp;t=0">
<iframe src="https://www.youtube.com/embed/sbfdzF8X-AQ?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure> </div>
</div><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ivbk">
<h3 id="toc-w1r4-dream-by-wombo">8. <span><u>Dream by Wombo</u></span>
</h3>
<figure class="post_image"><a href="https://dream.ai/create"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/412/posts/107499/image-upload/dream_by_wombo.jpg" alt="dream by wombo" loading="lazy" width="870px" height="513px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/412/posts/107499/image-upload/dream_by_wombo.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/412/posts/107499/image-upload/dream_by_wombo.jpg" alt="dream by wombo" loading="lazy" width="650px" height="385px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/412/posts/107499/image-upload/dream_by_wombo.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/posts/107499/image-upload/dream_by_wombo.jpg" alt="dream by wombo" loading="lazy" width="380px" height="229px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/posts/107499/image-upload/dream_by_wombo.jpg 2x"></a></figure>
<p><a href="https://dream.ai/create" target="_self">Dream</a> is a pretty simple prompt-based AI image generator, so a good start for beginners. You can make one image at a time using some references images to indicate preferred style – these are limited unless you pay.</p>
<h4 id="toc-trpo-quick-look">Quick Look</h4>
<p><strong>Pricing</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Tier</strong></p>
</td>
<td>
<p><strong>Cost and What you get</strong></p>
</td>
</tr>
<tr>
<td>
<p>Free</p>
</td>
<td>
<p>Get started for free with limited options. Good for practising prompts.</p>
</td>
</tr>
<tr>
<td>
<p>Premium (subscription)</p>
</td>
<td>
<p>$9.99/m or $89.99 per year. Full access.</p>
</td>
</tr>
<tr>
<td>
<p>Lifetime (one off payment)</p>
</td>
<td>
<p>$169.99. Full access.</p>
</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Pros</strong></p>
</td>
<td>
<p>You can play around for free to get used to it. A lifetime license is unusual – could be great if the software improves.</p>
</td>
</tr>
<tr>
<td>
<p><strong>Cons</strong></p>
</td>
<td>
<p>The results aren’t brilliant and they take a little while to generate. Free users are limited in which styles they can create.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="toc-1j5r-deep-dream-generator">9. <span><u>Deep Dream Generator</u></span>
</h3>
<p>This AI photo generator works in a number of styles, including photo-realistic images. You need to create an account to even try <a href="https://deepdreamgenerator.com/" target="_blank" rel="noopener">Deep Dream</a>, but you can see some examples on their home page.</p>
<h4 id="toc-zf49-quick-look">Quick Look</h4>
<p><strong>Pricing</strong></p>
<p><span>Deep Dream call their pricing, ‘energy...’ credits, essentially. You can save 25% with yearly billing. You can also purchase ‘energy packs’ as needed.</span></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Tier</strong></p>
</td>
<td>
<p><strong>Cost and What you get</strong></p>
</td>
</tr>
<tr>
<td>
<p>Advanced</p>
</td>
<td>
<p>$19/m - 120 energy, 12 recharging an hour, 20 GB storage, Full HD</p>
</td>
</tr>
<tr>
<td>
<p>Professional</p>
</td>
<td>
<p>$39/m – 250 energy, 18 recharging an hour, 50 GB storage, Quad HD+</p>
</td>
</tr>
<tr>
<td>
<p>Ultra</p>
</td>
<td>
<p>$99/m – 750 energy, 60 recharging an hour, 200 GB storage, Quad HD+</p>
</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Pros</strong></p>
</td>
<td>
<p>The AI generated images in art styles aren’t bad.</p>
</td>
</tr>
<tr>
<td>
<p><strong>Cons</strong></p>
</td>
<td>
<p>The pointless jargon of energy and recharging is enough to put you off. The pricing tiers are steep considering it doesn’t offer much more than similar competitors. It’s photograph style needs improvement.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="toc-ezcg-generated-photos">10. <span><u>Generated Photos</u></span>
</h3>
<figure class="post_image"><a href="https://generated.photos/"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/412/posts/107499/image-upload/generated_photos.jpg" alt="Generated photos" loading="lazy" width="870px" height="421px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/412/posts/107499/image-upload/generated_photos.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/412/posts/107499/image-upload/generated_photos.jpg" alt="Generated photos" loading="lazy" width="650px" height="317px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/412/posts/107499/image-upload/generated_photos.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/posts/107499/image-upload/generated_photos.jpg" alt="Generated photos" loading="lazy" width="380px" height="190px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/posts/107499/image-upload/generated_photos.jpg 2x"></a></figure>
<p><a href="https://generated.photos/" target="_self">Generated Images</a> lets you browse existing images or generate your own AI stock image. This site focuses on people, and you can start with a random face or build your own from scratch.</p>
<h4 id="toc-te3v-quick-look">Quick Look</h4>
<p><strong>Pricing</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Tier</strong></p>
</td>
<td>
<p><strong>Cost and What you get</strong></p>
</td>
</tr>
<tr>
<td>
<p>Free</p>
</td>
<td>
<p>A 3-day trial</p>
</td>
</tr>
<tr>
<td>
<p>Monthly</p>
</td>
<td>
<p>$19.99 – unlimited generations, 15 hi-res downloads per month, 1024px x 1024px JPEG or PNG.</p>
</td>
</tr>
<tr>
<td>
<p>Yearly</p>
</td>
<td>
<p>$199 ($16.58/m) – as above</p>
</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Pros</strong></p>
</td>
<td>
<p>Simple pricing structure. If you have the patience you can build something very realistic. Wide range of existing AI generated images.</p>
</td>
</tr>
<tr>
<td>
<p><strong>Cons</strong></p>
</td>
<td>
<p>It’s mostly focused on people/models. Very limited trial period. Specific licensing terms for certain things, so you need to read them carefully before you use.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="toc-ufth-canva-ai">11. <span><u>Canva AI</u></span>
</h3>
<figure class="post_image"><a href="https://www.canva.com/ai-image-generator/"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/412/posts/107499/image-upload/canva_AI.jpg" alt="canva AI" loading="lazy" width="870px" height="490px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/412/posts/107499/image-upload/canva_AI.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/412/posts/107499/image-upload/canva_AI.jpg" alt="canva AI" loading="lazy" width="650px" height="368px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/412/posts/107499/image-upload/canva_AI.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/posts/107499/image-upload/canva_AI.jpg" alt="canva AI" loading="lazy" width="380px" height="219px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/posts/107499/image-upload/canva_AI.jpg 2x"></a></figure>
<p><a href="https://www.canva.com/ai-image-generator/" target="_blank" rel="noopener">Canva</a> is already a one-stop-shop for many people when it comes to creating social media posts, marketing images and much more… and now, it has AI generated images too! Canva’s AI integrates with its other tools, so you can create AI images from pre-sized templates.</p>
<h4 id="toc-j0on-quick-look">Quick Look</h4>
<p><strong>Pricing</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Tier</strong></p>
</td>
<td>
<p><strong>Cost and What you get</strong></p>
</td>
</tr>
<tr>
<td>
<p>Free</p>
</td>
<td>
<p>Right now it’s totally free, though they limited their writing AI eventually, unless you subscribed. I wouldn’t be surprised if that happened here too.</p>
</td>
</tr>
</tbody>
</table>
<p><strong>Pros and Cons</strong></p>
<table>
<tbody>
<tr>
<td>
<p><strong>Pros</strong></p>
</td>
<td>
<p>It’s free. You don’t need much in the way of skill to use it. Intuitive interface.</p>
</td>
</tr>
<tr>
<td>
<p><strong>Cons</strong></p>
</td>
<td>
<p>The results are fairly poor if you’re looking for photo-realism.</p>
</td>
</tr>
</tbody>
</table>
<h2 id="toc-4uti-summary-which-is-the-best-ai-image-generator">Summary – Which is the best AI image generator</h2>
<p>There are a lot of very similar offerings when it comes to AI Generated Images, so it makes choosing the best AI image generator a bit tricky.</p>
<h3 id="toc-n3er-realism">Realism</h3>
<p>If realistic results are important to you then it’s probably going to come with a price tag. <span><u><a href="https://www.midjourney.com/">Midjourney</a></u></span> and <span><u><a href="https://openai.com/dall-e-2">DALL-E</a></u></span> are renowned for getting realistic images with text prompts, so they’re a good place to start.</p>
<p>For art and landscapes most AI image generators aren’t doing too badly. People are more difficult, so try <span><u><a href="https://generated.photos/">Generated Photos</a></u></span>.</p>
<h3 id="toc-ewzd-cost">Cost</h3>
<p>Cost gets complicated. It’s wise to try something with a free trial so that you can see if you like it first. I won’t tell you that <span><u><a href="https://dream.ai/create">Dream by Wombo</a></u></span> has incredible results, but if you’re new to AI picture generating then it’s good practice for prompt writing and seeing what results you get, particularly now that Midjourney doesn’t have a free option. <span><u><a href="https://dreamstudio.ai/generate">DreamStudio</a></u></span> has some free credits too and then offers a PAYG system which you might find more appealing than subscription.</p>
<p>If you already use Canva, then <span><u><a href="https://www.canva.com/ai-image-generator/">Canva AI</a></u></span> is a no-brainer, like <span><u><a href="https://dream.ai/create">Dream by Wombo</a></u></span> it’s a good place to practice prompts and get familiar with styles.</p>
<h3 id="toc-5sk5-avoiding-prompts">Avoiding Prompts</h3>
<p>If prompt writing isn’t your thing and you’ve an artistic flair, it might be worth trying the drawing based AI generators, like <span><u><a href="https://www.nvidia.com/en-gb/studio/canvas/">NVIDIA Canvas</a>,</u></span><span> where you can add and remove elements by sketching in simple shapes.</span></p>
<h2 id="toc-5qy8-conclusion">Best AI photo generators to make stock images fast in 2025</h2>
<p>AI picture generators are becoming very, very good and already we can see several powerful tools coming to the forefront, like <strong>Midjourney </strong>and <strong>DALL-E</strong>.</p>
<p>They offer a wide variety of artistic styles, and many of them are getting the hang of photo-realism too. There are still limitations, though.</p>
<p>Price is a huge factor – right now, subscribing to a decent AI photo generator will cost you quite a lot per month, which means if you’re looking for volume, it’s probably not there for you yet.</p>
<p>If however, you’re looking for something to use now and again for specific projects, particularly ones that require something more artistic or unusual, then you may find them a good place to go for stock photo creation.</p>
<p>Remember to review licensing terms carefully so that you don’t fall foul of any copyright laws or usage rights.</p>
<p>We should remember that AI photo generators are incredible assets that are designed to complement our creativity, rather than replace it.</p>
<h2 id="toc-5xt2-envato-elements">Envato</h2>
<figure class="post_image"><a href="https://elements.envato.com/walking-alone-in-the-highlands-TR6QACG" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/412/posts/107499/image-upload/walking_alone_in_the_highlands_2022_12_16_01_03_31_utc.jpg" alt="Walking alone in the highlands" loading="lazy" width="870px" height="454px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/412/posts/107499/image-upload/walking_alone_in_the_highlands_2022_12_16_01_03_31_utc.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/412/posts/107499/image-upload/walking_alone_in_the_highlands_2022_12_16_01_03_31_utc.jpg" alt="Walking alone in the highlands" loading="lazy" width="650px" height="342px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/412/posts/107499/image-upload/walking_alone_in_the_highlands_2022_12_16_01_03_31_utc.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/posts/107499/image-upload/walking_alone_in_the_highlands_2022_12_16_01_03_31_utc.jpg" alt="Walking alone in the highlands" loading="lazy" width="380px" height="204px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/posts/107499/image-upload/walking_alone_in_the_highlands_2022_12_16_01_03_31_utc.jpg 2x"></a>
<figcaption>Walking alone in the highlands via Envato Elements</figcaption>
</figure>
<p>If AI picture generators isn’t quite where you want to be yet, don’t worry, we haven’t abandoned traditional stock photography. You can find non AI generated images – or <span><u><a href="https://elements.envato.com/photos" data-action="click-&gt;ga-analytics#sendElementsClickEvent">stock photographs</a></u></span>(!) as we like to call them. at Envato, and the best bit is you can download as many as you like with your subscription.</p>
<h2 id="toc-zm1m-about
this-page"><strong><span>About this page</span></strong></h2>
<p><span>This page was written by </span><span><u><a href="https://tutsplus.com/authors/marie-gardiner" target="_blank" rel="noopener">Marie Gardiner</a></u></span><span>. Marie is a writer, author, and photographer. It was edited by </span><span><u><a href="https://tutsplus.com/authors/gonzalo-angulo" target="_blank" rel="noopener">Gonzalo Angulo</a></u></span><span>. Gonzalo is an editor, writer and illustrator.</span></p>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/107499/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/107499/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/107499/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/107499/a2t.img" width="1" /></div></content>
<published>2025-08-01 22:17:05 UTC</published>
<updated>2025-08-01 22:17:05 UTC</updated>
<author>
<name>Marie Gardiner</name>
</author>
</entry>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/cms-108458</id>
<published>2024-02-15T12:12:30+00:00</published>
<link rel="alternate" type="text/html" href="https://design.tutsplus.com/articles/best-ai-image-generators--cms-108458"/>
<title>The best AI image generators of 2025</title>
<content type="html"><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="in0f">
<p>Looking to create your next AI masterpiece? Or do you simply want to discover fantastic assets to use in your next creative project? Finding the best AI tool for graphic design will help you take your ideas to the next level, and many of the latest and best AI image generators are not only easy to use but often free to try out as well.</p>
<p>Here, creative people can find our edit of the best AI image generators of 2025, from Midjourney to ImageGen, as well as tips for using AI design apps like Adobe Firefly or an <a href="https://labs.envato.com/image-gen" target="_blank" rel="noopener">image generator from photo</a> to integrate imagery into your own designs.</p>
<p>Tap into the top <a href="https://elements.envato.com/learn/ai-trends" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">2025 AI design trends</a> with these <a href="https://design.tutsplus.com/compatible-with/ai-tools" target="_self">AI tools</a> for graphic design, photography, and advanced image editing, and see your projects come to life!</p>
<figure class="post_image"><a href="https://labs.envato.com/image-gen"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg" alt="imagegen envato labs ai image generator" loading="lazy" width="870px" height="498px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg" alt="imagegen envato labs ai image generator" loading="lazy" width="650px" height="374px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg" alt="imagegen envato labs ai image generator" loading="lazy" width="380px" height="222px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/imagegen_1.jpg 2x"></a>
<figcaption>You can create images like this using Envato's ImageGen.</figcaption>
</figure>
<h2 id="toc-1wqi-the-best-ai-image-generators">The best AI image generators in 2025</h2>
<table>
<tbody>
<tr>
<td>
<p><a href="#toc-6eaf-envato-imagegen" target="_blank" rel="noopener">Envato ImageGen</a></p>
</td>
<td>Best for social media content, trending styles, and the leading models available!</td>
</tr>
<tr>
<td><a href="#toc-z9w6-chatgpt-gpt-4o" target="_blank" rel="noopener">Chat GPT (GPT-4o)</a></td>
<td>Best for photorealism and conversational editing.</td>
</tr>
<tr>
<td><a href="#toc-c6rb-adobe-firefly" target="_blank" rel="noopener">Adobe Firefly</a></td>
<td>Best for photography and project integration.</td>
</tr>
<tr>
<td><a href="#toc-f9ln-midjourney" target="_blank" rel="noopener">Midjourney</a></td>
<td>Best for artistic, atmospheric imagery.</td>
</tr>
<tr>
<td><a href="#toc-gm84-dalle-3" target="_blank" rel="noopener">DALL·E 3</a></td>
<td>Best for cartoons and nuanced prompts.</td>
</tr>
<tr>
<td><a href="#toc-0p5k-flux-11-pro-ultra" target="_blank" rel="noopener">Flux 1.1 Pro Ultra</a></td>
<td>Best for high-definition portraits.</td>
</tr>
<tr>
<td><a href="#toc-5k1a-recraft" target="_blank" rel="noopener">Recraft</a></td>
<td>Best for graphic designs and vector images.</td>
</tr>
<tr>
<td><a href="#toc-rgcp-stable-diffusion" target="_blank" rel="noopener">Stable Diffusion</a></td>
<td>Best for uninterrupted creativity. </td>
</tr>
<tr>
<td><a href="#toc-xkfx-reve" target="_blank" rel="noopener">Reve</a></td>
<td>Best for fast generation and high detail.</td>
</tr>
<tr>
<td><a href="#toc-mj73-ideogram" target="_blank" rel="noopener">Ideogram</a></td>
<td>Best for clear text and commercial imagery.</td>
</tr>
</tbody>
</table>
<h2 id="toc-6yr2-what-is-an-ai-image-generator">What is an AI image generator?</h2>
<p>First, back to basics—maybe you’ve used an AI image generator before and are curious about what else is out there, or perhaps you’re fresh to the AI app scene. Either way, AI image generators are fast becoming an essential tool in a creative’s kit to visualize ideas and experiment with different styles and layouts. And with the advances in the technology, it's now possible to use AI art generators to create unique work as part of a creative project.</p>
<p>In a nutshell, AI image generators transform your <a href="https://elements.envato.com/learn/ai-art-prompts" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">AI art prompts</a> into a visual image. The more refined and specific your text prompt, the more likely it is that the resulting image will be in line with what you imagined.</p>
<h3 id="toc-gkdx-how-do-ai-image-generators-work">How do AI image generators work?</h3>
<p>They're trained on vast amounts of visual data, allowing the generator to build associations between styles, subjects, and patterns. The more advanced image generators will be able to pick up on AI image trends and design trends more widely, creating more relevant and contemporary results. The best AI design apps are capable of generating images that are almost indistinguishable from real-life pictures—although there are a range of tell-tale signs you can use to <a href="https://design.tutsplus.com/articles/is-this-image-ai-generated--cms-108441" target="_self" rel>identify AI-generated images</a>.</p>
<p>And yup... human hands are still a sore point for almost all the image generators we tried. So we'll keep you posted on that one!</p>
<figure class="post_image"><a href="https://labs.envato.com/image-gen/70003410-5055-48e7-b0c0-f5492c25d5eb"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg" alt="ai generated hand dodgy" loading="lazy" width="870px" height="870px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg" alt="ai generated hand dodgy" loading="lazy" width="650px" height="650px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg" alt="ai generated hand dodgy" loading="lazy" width="380px" height="380px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/envato_labs_ai_70003410_5055_48e7_b0c0_f5492c25d5eb.jpg 2x"></a>
<figcaption><a href="https://labs.envato.com/image-gen/70003410-5055-48e7-b0c0-f5492c25d5eb" target="_blank" rel="noopener">Image</a> created with Envato's ImageGen.</figcaption>
</figure>
<h2 id="toc-5qt7-what-are-the-best-ai-design-apps">What are the best AI design apps?</h2>
<p>It’s important to know that the best AI design apps <strong>enable your creativity</strong>, rather than replacing it. They take your ideas and turn them into reality, allowing you to refine your AI image results further to achieve particular angles, styles, colors, and trends.</p>
<p>The most advanced AI design tools might allow you to integrate AI images into your own work, creating a seamless design that blends the best of both worlds. So depending on what you’re looking for—whether mapping out a creative idea or looking for something more sophisticated—these are the best AI design apps by project. Scroll down for the full list of our recommendations to discover even more great AI tools for design, and take a deep dive into the features they offer.</p>
<h3 id="toc-r5br-which-ai-tool-is-best-for-graphic-design">Which AI tool is best for graphic design?</h3>
<p>The <a href="https://elements.envato.com/lp/ai-stack/" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">best AI tool for graphic design</a>? If you’re looking to map out design concepts for a brief, a quick and intuitive app like <a href="https://labs.envato.com/image-gen" target="_blank" rel="noopener">ImageGen</a> is a great starting point for beginners, and it includes an <a href="https://elements.envato.com/learn/ai-art-prompts" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">AI prompt</a> enhancement feature that makes your text even more effective.</p>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/what-is-envato-ai-imagegen--cms-108551"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What is Envato AI ImageGen?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Maria Villanueva</div>
<div class="roundup-block__published-date">01 Aug 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/is-this-image-ai-generated--cms-108441"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Is This Image AI-Generated? Here's How You Can Tell</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">MissChatz</div>
<div class="roundup-block__published-date">11 Mar 2024</div>
</div>
</div>
</div>
</div></a></li>
</ul>
<p>For creating logos, typography, and icons, online AI app <a href="https://ideogram.ai/t/explore" target="_blank" rel="noopener">Ideogram</a> allows graphic designers to pull multiple elements together into a cohesive layout for posters, flyers, or banners.</p>
<p><a href="https://www.recraft.ai/" target="_blank" rel="noopener">Recraft</a> places an emphasis on AI images that have an editorial, polished feel, making it a great fit for advertising work or branded campaigns.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg" alt="recraft ai image generator app for graphic design" loading="lazy" width="870px" height="561px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg" alt="recraft ai image generator app for graphic design" loading="lazy" width="650px" height="421px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg" alt="recraft ai image generator app for graphic design" loading="lazy" width="380px" height="249px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/recraft_2_1_.jpg 2x"></figure>
<h3 id="toc-0g25-which-ai-tool-is-best-for-fun">Which AI tool is best for... just having fun?</h3>
<p>To make a quick start with creating AI images, and have plenty of fun in the process, you could try a simple image generator tool like Google’s <a href="https://gemini.google/overview/image-generation/?hl=en" target="_blank" rel="noopener">Gemini</a>, which gives experimental (and often downright weird) results with just a few words.</p>
<p>Or take <a href="https://www.meta.ai/" target="_blank" rel="noopener">Meta AI</a> for a spin, which has been designed with beginners in mind. In the app, tap <strong>Ask Meta AI </strong>and type in what you’d like to generate, starting with <strong>Imagine</strong>. Place yourself into different scenarios (however bizarre) and share the results on social media. Just don’t expect anything too advanced!</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/meta_ai.jpg" alt="meta ai image generator" loading="lazy" width="870px" height="485px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/meta_ai.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/meta_ai.jpg" alt="meta ai image generator" loading="lazy" width="650px" height="365px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/meta_ai.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/meta_ai.jpg" alt="meta ai image generator" loading="lazy" width="380px" height="217px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/meta_ai.jpg 2x"></figure>
<h3 id="toc-qqaf-which-ai-tool-is-best-for-photography">Which AI tool is best for photography?</h3>
<p><a href="https://www.adobe.com/products/firefly.html" target="_blank" rel="noopener">Adobe Firefly</a> is one of the best AI tools for advanced image editing, allowing you to create and refine sophisticated prompts, work with the latest generative AI technology, and integrate your imagery into existing photographs. Experiment with different angles, backgrounds, and lighting prompts to get the most from your AI-generated photos. Flexible and natural results: it's a win-win.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg" alt="adobe firefly generative fill" loading="lazy" width="870px" height="586px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg" alt="adobe firefly generative fill" loading="lazy" width="650px" height="440px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg" alt="adobe firefly generative fill" loading="lazy" width="380px" height="260px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/adobe_firefly_2.jpg 2x"></figure>
<h3 id="toc-gqtf-which-ai-tool-is-best-for-advanced-creative-work">Which AI tool is best for advanced creative work?</h3>
<p>It really depends on the type of project you're working on, but there are a growing number of AI design apps that cater to advanced graphic design, product design, photography, and brand work. <a href="https://www.midjourney.com/home" target="_blank" rel="noopener">Midjourney</a> is great for experimenting with artistic styles and subtle effects in your images, while content creators and filmmakers will love the advanced capabilities of AI video generation in <a href="https://runwayml.com/" target="_blank" rel="noopener">Runway</a>.</p>
<p>For more control over creative results, <a href="https://openai.com/index/dall-e-3/" target="_blank" rel="noopener">DALL·E 3</a> generates really impressive and accurate results. The app is built around ChatGPT but is fine-tuned to image generation, making your requests more atmospheric, nuanced, and specific.</p>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-create-a-movie-poster-using-ai-with-imagegen-and-imageedit--cms-109151"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">How to create a movie poster using AI with Envato ImageGen and ImageEdit</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Ashlee Harrell</div>
<div class="roundup-block__published-date">14 Mar 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/midjourney-vs-stable-diffusion-ai-image-generators--cms-108355"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Midjourney vs. Stable Diffusion: AI Image Generators</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">MissChatz</div>
<div class="roundup-block__published-date">06 Feb 2024</div>
</div>
</div>
</div>
</div></a></li>
</ul>
<p>For more recommended AI design apps, read on to discover our overview of some of the best AI image generators for graphic design and other creative projects in 2025.</p>
<h2 id="toc-zebw-the-best-ai-image-generators-of-2025-8-apps-to-use-now">The best AI image generators of 2025: 10 apps to use now</h2>
<p>Looking for the best AI for graphic design projects? Or something a little more cheap and cheerful? These are our top picks for 2025, with recommended use and price details.</p>
<h3 id="toc-6eaf-envato-imagegen">1. Envato ImageGen</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Quick and intuitive to use.</strong></li>
<li><strong>Always adding the latest cutting edge tech (the best models—like Imagen 4!)</strong></li>
<li><strong>Tap into trends and make images more precise with built-in AI prompt enhancement.</strong></li>
<li><strong>Continue editing and <a href="https://labs.envato.com/image-edit" target="_blank" rel="noopener">fine tuning images</a> with ImageEdit.</strong></li>
<li><strong><a href="https://labs.envato.com/video-gen" target="_self">Turn static images into videos</a> with VideoGen.</strong></li>
</ul>
<p>If you’re looking for the balance of an intuitive, user-friendly interface with the potential to maximize the creative reach of your AI images, ImageGen is well worth a look. It's easy for beginners to dive in thanks to the ability to enhance your prompts using AI, but this image generator also allows you to get really experimental with aesthetic styles and fun trends. So whether you’re looking for cutesy illustrations or photorealistic portraits, your image results are sure to be experimental, bold, and fun.</p>
<p>Envato's AI tools also have the added benefit of image editing via their <a href="https://labs.envato.com/image-edit" target="_self">I</a>mageEdit tools. You can customise your images even further to get the creation for your project.</p>
<p>You can also find a full suite of complementary <em>creative AI tools</em> to pair with ImageGen, so you can generate videos from static images or refine images further with background removal, erasure, and upscaling.</p>
<p><strong>Best for: </strong>Achieving trending image styles, social media content creation, enhanced AI prompts.</p>
<p><strong>Price: </strong>ImageGen is included as part of an Individual or Team plan at Envato, which also gives you complete access to Envato’s library of creative assets, plus all its AI tools that includes image editing, video generation, music generation, and voice generation. You can even try ImageGen for free with five image generations. (AI tools are not included with Enterprise plans.)</p>
<figure class="post_image"><a href="https://labs.envato.com/image-gen"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg" alt="envato imagegen ai image generator" loading="lazy" width="870px" height="454px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg" alt="envato imagegen ai image generator" loading="lazy" width="650px" height="342px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg" alt="envato imagegen ai image generator" loading="lazy" width="380px" height="204px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/imagegen_3.jpg 2x"></a></figure>
<h3 id="toc-z9w6-chatgpt-gpt-4o">2. ChatGPT</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Great for photorealistic images.</strong></li>
<li><strong>Understands sophisticated, precise prompts.</strong></li>
<li><strong>Edit images with the app conversation-style.</strong></li>
</ul>
<p><a href="https://chatgpt.com/" target="_self" rel="nofollow">ChatGPT</a>’s image generation capabilities have always been one of the strongest on the market, but with <a href="https://chatgpt.com/" target="_blank" rel="noopener">GPT-4o</a>, developed by OpenAI, users can create images that not only look amazing but are also imbued with more meaning and relevance.</p>
<p>Create images with sophisticated typography and meaningful text (no more blurry, nonsensical type bunged into your image for no good reason!), as well as ultra-convincing photorealistic effects. OpenAI dubs it the app for "useful image generation," and we have to agree—the accuracy and precision of prompts, as well as the conversational style of interacting with the app, make refining your image results easy and intuitive. So you can go from icon to game character to creating a whole visual world in very little time.</p>
<p><strong>Best for: </strong>Photorealism, sophisticated prompts, conversational refinement.</p>
<p><strong>Price: </strong>Free for all users, with a limit of three images per day. Plus ($20 per month) or Pro ($200 per month) users can generate unlimited images.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg" alt="chat gpt ai image generator" loading="lazy" width="870px" height="1143px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg" alt="chat gpt ai image generator" loading="lazy" width="650px" height="852px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg" alt="chat gpt ai image generator" loading="lazy" width="380px" height="496px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/chat_gpt.jpg 2x"></figure>
<h3 id="toc-c6rb-adobe-firefly">3. Adobe Firefly</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Perfect for photographers looking to enhance their own photos.</strong></li>
<li><strong>Best for integrating into your own project workflow.</strong></li>
<li><strong>Benefit from cool features like Generative Fill.</strong></li>
</ul>
<p>Adobe’s AI powerhouse app has been created with designers in mind. Create images, video, audio, and vector graphics, collaborate with fellow creatives using <strong>Firefly Boards</strong>, and generate videos from static images.</p>
<p>Creative studios love <a href="https://www.adobe.com/products/firefly" target="_blank" rel="nofollow noopener">Firefly</a> for its advanced image-editing features and seamless user experience, making it feel like a part of your creative team rather than a standalone AI design app.</p>
<p><strong>Best for: </strong>Advanced photo editing, cool additional features like <strong>Generative Fill</strong>, integration of imagery into existing projects.</p>
<p><strong>Price: </strong>You can start using Firefly for free, with limited generative credits. Upgrade to Firefly Standard ($9.99 per month) or Firefly Pro ($29.99 per month) for unlimited image generation and features.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg" alt="adobe firefly ai design app" loading="lazy" width="870px" height="423px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg" alt="adobe firefly ai design app" loading="lazy" width="650px" height="319px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg" alt="adobe firefly ai design app" loading="lazy" width="380px" height="191px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/adobe_firefly.jpg 2x"></figure>
<h3 id="toc-f9ln-midjourney">4. Midjourney</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Create highly artistic images.</strong></li>
<li><strong>High level of realism.</strong></li>
<li><strong>Adjust images easily with editing features.</strong></li>
</ul>
<p>Offering an enticing balance of exceptional ease of use and aesthetically pleasing results, <a href="https://www.midjourney.com/home" target="_self" rel="nofollow">Midjourney</a> is beloved by fans for its ability to create dreamlike landscapes and immersive images that look like something straight out of a fantasy movie, with only a few text prompts.</p>
<p>To use it, you’ll need to sign up for an account with Discord, which is a social messaging platform popular with online gamers. After you've done that, you can use the app simply by typing <code>/imagine</code> in the Discord chat and creating your AI text prompt from there. One advantage of Midjourney is that it offers cool features to adjust your generated image, so you can create different variations, zoom out, or fill parts of the image with contextual imagery.</p>
<p><strong>Best for:</strong> Artistic results, atmospheric images, realism.</p>
<p><strong>Price: </strong>Start generating 25 images for free. After that, a Basic plan starts from $10 per month (or $8 if paid annually).</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/midjourney.jpg" alt="midjourney ai image generator" loading="lazy" width="870px" height="437px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/midjourney.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/midjourney.jpg" alt="midjourney ai image generator" loading="lazy" width="650px" height="329px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/midjourney.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/midjourney.jpg" alt="midjourney ai image generator" loading="lazy" width="380px" height="197px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/midjourney.jpg 2x"></figure>
<h3 id="toc-gm84-dalle-3">5. DALL-E 3</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Perfect for creating fun, cartoon-style, and surrealist imagery.</strong></li>
<li><strong>Less suited to photorealism.</strong></li>
<li><strong>Understands nuanced text prompts for greater precision.</strong></li>
</ul>
<p>As long as you’re not looking for realistic photography (which isn’t its strong point), DALL·E 3, hosted by OpenArt AI, is a good all-round image generator that excels at producing quirky and experimental images. Cartoon and 3D styles can come out really well, but the definition and quality of images can also vary widely.</p>
<p>Improving on its earlier iteration, DALL·E 2, <a href="https://openai.com/index/dall-e-3/" target="_blank" rel="nofollow noopener">DALL·E 3</a> is able to better understand complex text descriptions and create more specific images as a result.</p>
<p>A big plus of the generator is its accessibility and price point. Anyone with a ChatGPT account can access DALL·E 3, or you can use it for free through Bing's <a href="https://www.bing.com/images/create" target="_blank" rel="nofollow noopener">Image Creator</a>, making it a good-value option.</p>
<p><strong>Best for: </strong>Cartoons and comics, nuanced and accurate prompts, atmospheric imagery.</p>
<p><strong>Price: </strong>Available through ChatGPT Plus for $20 a month, or use for free via Bing Image Creator.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg" alt="dall e 3 ai image generator" loading="lazy" width="870px" height="470px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg" alt="dall e 3 ai image generator" loading="lazy" width="650px" height="354px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg" alt="dall e 3 ai image generator" loading="lazy" width="380px" height="211px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/dall_e_3.jpg 2x"></figure>
<h3 id="toc-0p5k-flux-11-pro-ultra">6. Flux 1.1 Pro Ultra</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Generate "look twice" highly photorealistic images.</strong></li>
<li><strong>Export images in high detail and high definition.</strong></li>
<li><strong>Requires patience and experimentation for best results.</strong></li>
</ul>
<p>Promising photorealism to rival real-life photography, <a href="https://flux1.ai/flux1-1-ultra" target="_blank" rel="nofollow noopener">Flux 1.1 Pro Ultra</a> by Black Forest Labs is causing quite a stir in creative circles, and for good reason. Image results are highly detailed, with exceptional lighting and accurate text rendering.</p>
<p>The interface is designed with developers in mind rather than designers, so it's not the most user-friendly AI design app. It also struggles with consistency and prompt refinement, so you have to be patient to get the best results.</p>
<p><strong>Best for: </strong>Ultra-photorealistic images, human portraits, high-definition 4K images.</p>
<p><strong>Price: </strong>Try Flux 1.1. Pro for free as part of a trial, or create more at $0.06 per image.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg" alt="flux ultra ai image generator" loading="lazy" width="870px" height="487px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg" alt="flux ultra ai image generator" loading="lazy" width="650px" height="366px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg" alt="flux ultra ai image generator" loading="lazy" width="380px" height="218px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/Flux_ultra.jpg 2x"></figure>
<h3 id="toc-5k1a-recraft">7. Recraft </h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Great for graphic designers, product designers, and branding.</strong></li>
<li><strong>Generate polished, commercial imagery.</strong></li>
<li><strong>Combine typography and mockup imagery seamlessly.</strong></li>
</ul>
<p>The best AI tool for graphic design specifically might just be <a href="https://www.recraft.ai/" target="_blank" rel="nofollow noopener">Recraft</a>, which has a user-friendly interface for creating vector art, illustrations, and 3D graphics. Color control features allow you to keep your palette consistent across multiple images, making designs easily transferrable to branding projects or logo designs. You can also save your creations in a range of handy image formats, including SVG, JPG, and PNG.</p>
<p>We particularly love the attention to detail in Recraft, which means you can subtly adjust small elements of a design, such as typography, color, or background, and it’s super easy to integrate a design into a range of mockups, making it a useful AI design app for ideation and client pitch work.</p>
<p><strong>Best for: </strong>Graphic design, vector graphics, product mockups.</p>
<p><strong>Price: </strong>Try the app for free, or upgrade to a Basic plan for $12 a month (or $10 paid annually).</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/Recraft.jpg" alt="recraft image generator for graphic design" loading="lazy" width="870px" height="507px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/Recraft.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/Recraft.jpg" alt="recraft image generator for graphic design" loading="lazy" width="650px" height="381px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/Recraft.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/Recraft.jpg" alt="recraft image generator for graphic design" loading="lazy" width="380px" height="226px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/Recraft.jpg 2x"></figure>
<h3 id="toc-rgcp-stable-diffusion">8. Stable Diffusion</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Uncensored content gives complete creative flexibility.</strong></li>
<li><strong>Mimics the creative process most accurately out of all the apps we tested.</strong></li>
<li><strong>Free for most individuals, for commercial and personal use.</strong></li>
</ul>
<p>User-friendly and cost-effective, <a href="https://stablediffusionweb.com/" target="_blank" rel="nofollow noopener">Stable Diffusion</a> is an open-source AI image generator developed by Stability AI. Unrestricted and uncensored content gives users more freedom and artistic reach than other AI image generators, granting access to a broader library of content.</p>
<p>A vast library of extensions also allows creatives to fine-tune their image results with ease. If you’re looking for an AI design app that feels closest to an actual artistic process, Stable Diffusion is possibly the most creative tool on the market right now.</p>
<p><strong>Best for:</strong> Uninterrupted creativity, flexible editing, artistic results.</p>
<p><strong>Price: </strong>Free for most users, with larger organizations required to purchase a licence.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg" alt="stable diffusion ai image editor and generator" loading="lazy" width="870px" height="779px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg" alt="stable diffusion ai image editor and generator" loading="lazy" width="650px" height="583px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg" alt="stable diffusion ai image editor and generator" loading="lazy" width="380px" height="341px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/stable_diffusion.jpg 2x"></figure>
<h3 id="toc-xkfx-reve">9. Reve</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Ultra-speedy image generation.</strong></li>
<li><strong>High-quality, detailed results.</strong></li>
<li><strong>Experiment with a wide range of styles.</strong></li>
</ul>
<p>Fast, free, and super easy to use, <a href="https://reveai.org/" target="_blank" rel="nofollow noopener">Reve</a> is a new kid on the AI block (having been released in March 2025), but it's fast becoming a favorite amongst creatives looking for an all-in-one AI image generator that won’t break the bank.</p>
<p>One of the cool features of Reve is the range of aesthetic styles you can play with, such as watercolor, fantasy, and photorealistic. With a little experimentation, you can create highly detailed, immersive images in just a few seconds, and it almost always responds to AI text prompts with efficiency and precision. Well worth a look, we think!</p>
<p><strong>Best for: </strong>Fast image generation, high-quality and detailed imagery, precise text prompts.</p>
<p><strong>Price: </strong>Free for all users.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/reve_2.jpg" alt="reve image generator ai" loading="lazy" width="870px" height="634px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/reve_2.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/reve_2.jpg" alt="reve image generator ai" loading="lazy" width="650px" height="475px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/reve_2.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/reve_2.jpg" alt="reve image generator ai" loading="lazy" width="380px" height="280px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/reve_2.jpg 2x"></figure>
<h3 id="toc-mj73-ideogram">10. Ideogram</h3>
<p><strong>At a glance:</strong></p>
<ul>
<li><strong>Renders text accurately from prompts.</strong></li>
<li><strong>Generate commercial-style imagery.</strong></li>
<li><strong>The best of both worlds with graphic and photo integration.</strong></li>
</ul>
<p>On the market since 2023, <a href="https://ideogram.ai/t/explore" target="_blank" rel="nofollow noopener">Ideogram</a> is a strong contender for the best AI image generator for graphic design and gaming imagery, and it's particularly notable for its ability to integrate text as part of imagery without distortion or ‘gobbledygook’.</p>
<p>Ideogram uses <strong>Magic Prompt</strong>, which transforms a basic text prompt into a more complex and specific description, giving you improved art results. We think it’s a great all-round AI design app for graphic designers, artists, and brand designers, letting you create commercial-style imagery that looks polished and professional.</p>
<p><strong>Best for: </strong>Clear text on images, branded graphics, commercial imagery.</p>
<p><strong>Price: </strong>Start for free, or begin at $7 a month paid annually for more credits and faster generation speeds.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/114/posts/109192/image-upload/Ideogram.jpg" alt="ideogram ai image generator" loading="lazy" width="870px" height="499px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/114/posts/109192/image-upload/Ideogram.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/114/posts/109192/image-upload/Ideogram.jpg" alt="ideogram ai image generator" loading="lazy" width="650px" height="375px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/114/posts/109192/image-upload/Ideogram.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/posts/109192/image-upload/Ideogram.jpg" alt="ideogram ai image generator" loading="lazy" width="380px" height="223px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/posts/109192/image-upload/Ideogram.jpg 2x"></figure>
<h2 id="toc-5f2j-the-best-ai-image-generator-for-your-next-project-is">The best AI image generator for your next project is...?</h2>
<p>In an increasingly crowded AI app market, it can be tricky to work out which AI image generator is the right choice for you. Hopefully our selection will help you land on the best AI design app for your next creative project. The advantage of having multiple options to choose from is that many AI developers are starting to cater specifically to certain creative tasks and industries.</p>
<p>So, whether you’re a product designer looking to mock up your next range or a graphic designer seeking a quick mood board of ideas for a client, there are now highly effective AI image generators that are tailored to these purposes. Find the AI app to fit your niche, and let your ideas flow. You’ll be creating amazing AI art in no time!</p>
<p>The next step in your AI journey? You’ll need to discover the <a href="https://elements.envato.com/learn/ai-art-prompts" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">best AI art prompts</a> to generate jaw-dropping imagery, or why not learn <a href="https://design.tutsplus.com/tutorials/how-to-create-a-movie-poster-using-ai-with-imagegen-and-imageedit--cms-109151" target="_blank" rel="noopener">how to create an AI movie poster</a> to test your AI creative skills? And while you’re here, you can dive straight into creating AI photography, illustrations, and artwork in a few clicks with <a href="https://labs.envato.com/image-gen" target="_blank" rel="noopener">ImageGen</a>.</p>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/108458/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108458/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108458/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108458/a2t.img" width="1" /></div></content>
<published>2025-08-01 21:49:31 UTC</published>
<updated>2025-08-01 21:49:31 UTC</updated>
<author>
<name>Grace Fussell</name>
</author>
</entry>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/cms-108551</id>
<published>2024-02-29T02:20:38+00:00</published>
<link rel="alternate" type="text/html" href="https://design.tutsplus.com/articles/what-is-envato-ai-imagegen--cms-108551"/>
<title>What is Envato AI ImageGen?</title>
<content type="html"><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="izmf">
<p>Envato AI ImageGen is the first tool available on <a href="https://labs.envato.com/?utm_source=tuts&amp;utm_medium=referral&amp;utm_campaign=labs_tuts_blog" target="_blank" rel="noopener">Envato Labs</a>, the testing ground for <a href="https://labs.envato.com/image-gen" target="_blank" rel="noopener">AI image generation tools</a> that are being created for Envato subscribers. (Hint: be on the lookout for more tools soon!)</p>
<p>ImageGen is Envato’s new text-to-image generator designed to help Envato subscribers generate unique, high-quality images for their projects using AI. And it’s available now to try for free!</p>
<figure class="post_image"><a href="https://labs.envato.com/?utm_source=tuts&amp;utm_medium=referral&amp;utm_campaign=labs_tuts_blog"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2659/posts/108551/image-upload/ImageGen_main_108551.jpg" alt="Envato AI ImageGen" loading="lazy" width="870px" height="678px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2659/posts/108551/image-upload/ImageGen_main_108551.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2659/posts/108551/image-upload/ImageGen_main_108551.jpg" alt="Envato AI ImageGen" loading="lazy" width="650px" height="508px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2659/posts/108551/image-upload/ImageGen_main_108551.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/posts/108551/image-upload/ImageGen_main_108551.jpg" alt="Envato AI ImageGen" loading="lazy" width="380px" height="299px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/posts/108551/image-upload/ImageGen_main_108551.jpg 2x"></a></figure>
<h2 id="toc-ldh9-advantages-of-envato-ai-imagegen">Advantages of Envato AI ImageGen</h2>
<div class="callout-block">
<span class="callout-icon callout-do"></span>
<div class="callout-message">
<strong>Save time:</strong> generate images in diverse styles easily within your browser—no need to install software or learn prompt engineering.</div>
</div>
<div class="callout-block">
<span class="callout-icon callout-do"></span>
<div class="callout-message">
<strong>All in one:</strong> if you’ve been wanting to try AI generation for images, this is a great opportunity that's currently included in your Envato subscription. There’s no need to pay any other generative AI subscriptions or fees.</div>
</div>
<div class="callout-block">
<span class="callout-icon callout-do"></span>
<div class="callout-message">
<strong>Simple licensing:</strong> you can use the images you generate with Envato AI ImageGen for personal and commercial purposes, if they're part of a larger end product. For all the details, <a href="https://labs.envato.com/image-gen/terms" target="_blank" rel="noopener">check the licensing terms</a>.</div>
</div>
<div class="callout-block">
<span class="callout-icon callout-do"></span>
<div class="callout-message">
<strong>Try for free: </strong>You can trial the tool for free. Sign up for a free Envato account to receive 5 generations. Visit lab.envato.com and type your first prompt.</div>
</div>
<h2 id="toc-mro6-how-does-it-work">How does it work?</h2>
<p>Using Envato AI ImageGen is really easy. You just need to log in to your Envato account and visit <a href="https://labs.envato.com/?utm_source=tuts&amp;utm_medium=referral&amp;utm_campaign=labs_tuts_blog" target="_blank" rel="noopener">labs.envato.com</a>, or click on “AI Labs” right next to the search bar in <a href="https://elements.envato.com/" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Envato</a> and then click on "Generate Images". </p>
<p>Once you're there, all that’s left is to do is type whatever you wish to create in the search bar and click <strong>Generate</strong>. For the following example, the prompt was "cat cooking an omelette".</p>
<figure class="post_image"><a href="https://labs.envato.com/image-gen/generate"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2659/posts/108551/image-upload/ImageGen_2_108551.jpg" alt="using a prompt in Envato AI ImageGen" loading="lazy" width="870px" height="496px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2659/posts/108551/image-upload/ImageGen_2_108551.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2659/posts/108551/image-upload/ImageGen_2_108551.jpg" alt="using a prompt in Envato AI ImageGen" loading="lazy" width="650px" height="373px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2659/posts/108551/image-upload/ImageGen_2_108551.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/posts/108551/image-upload/ImageGen_2_108551.jpg" alt="using a prompt in Envato AI ImageGen" loading="lazy" width="380px" height="222px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/posts/108551/image-upload/ImageGen_2_108551.jpg 2x"></a></figure>
<p>ImageGen will then provide a few styles using the prompt. If you're drawn to a specific style, you can click on an image and then click on <strong>Use Style </strong>to get new images based on it. </p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2659/posts/108551/image-upload/ImageGen_3_108551.jpg" alt="AI generated image in a vibrant style" loading="lazy" width="870px" height="787px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2659/posts/108551/image-upload/ImageGen_3_108551.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2659/posts/108551/image-upload/ImageGen_3_108551.jpg" alt="AI generated image in a vibrant style" loading="lazy" width="650px" height="588px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2659/posts/108551/image-upload/ImageGen_3_108551.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/posts/108551/image-upload/ImageGen_3_108551.jpg" alt="AI generated image in a vibrant style" loading="lazy" width="380px" height="345px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/posts/108551/image-upload/ImageGen_3_108551.jpg 2x"></figure>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2659/posts/108551/image-upload/ImageGen_5_108551.jpg" alt="new images based on the selected style" loading="lazy" width="870px" height="312px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2659/posts/108551/image-upload/ImageGen_5_108551.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2659/posts/108551/image-upload/ImageGen_5_108551.jpg" alt="new images based on the selected style" loading="lazy" width="650px" height="236px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2659/posts/108551/image-upload/ImageGen_5_108551.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/posts/108551/image-upload/ImageGen_5_108551.jpg" alt="new images based on the selected style" loading="lazy" width="380px" height="144px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/posts/108551/image-upload/ImageGen_5_108551.jpg 2x"></figure>
<p>If you're happy and wish to download it, simply click on the <strong>Download</strong> button and you'll automatically get a JPG file.</p>
<p>Additionally, if you want to generate a different prompt, you only need to write it in the bar at the bottom of the screen, and you'll get the new styles to choose from. Your previous prompts will be shown below, so you won’t lose any work.</p>
<figure class="post_image"><a href="https://labs.envato.com/image-gen/generate"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/2659/posts/108551/image-upload/ImageGen_4_108551.jpg" alt="new prompt on Envato AI ImageGen" loading="lazy" width="870px" height="727px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/2659/posts/108551/image-upload/ImageGen_4_108551.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2659/posts/108551/image-upload/ImageGen_4_108551.jpg" alt="new prompt on Envato AI ImageGen" loading="lazy" width="650px" height="544px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2659/posts/108551/image-upload/ImageGen_4_108551.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/posts/108551/image-upload/ImageGen_4_108551.jpg" alt="new prompt on Envato AI ImageGen" loading="lazy" width="380px" height="319px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/posts/108551/image-upload/ImageGen_4_108551.jpg 2x"></a></figure>
<h2 id="toc-5rzy-prompt-tips">Pro tips for writing the best prompts</h2>
<p><strong>Start with simple prompts.</strong> Initially, use basic terms like “sunset,” “forest,” or “cat.” This approach helps you understand the range of styles and capabilities of the tool. Once you're familiar with it, you can start experimenting with more complex ideas and describing the subject in more detail, e.g describe the scene, time of day, elements you want included, or expressions.</p>
<p>But maybe you're wondering, "How can I get the specific image I have in mind?"<strong> </strong>Once you know what you’re looking for, refine your prompt by adding more detail. Describe the scene, mood, objects, and any specific elements you want to include. <strong>The more detailed your description, the closer the result will be to your vision.</strong> For example, instead of just “cat,” try “a fluffy white cat under a blooming cherry tree at sunrise.”</p>
<p>To improve the quality of the images you generate, practice and experimentation are key. Vary your prompts, observe the outcomes, and adjust accordingly. Detailed and creative descriptions often yield the most striking images.</p>
<h2 id="toc-yixi-and-thats-it">And that's it!</h2>
<p>Now you know how easy it is to create unique AI-generated images with your Envato subscription. Make sure to keep exploring the new tool and playing with different prompts. If you'd like to learn more about <a href="https://design.tutsplus.com/compatible-with/ai-tools" target="_blank" rel="noopener">AI tools</a>, we've got the best content for you:</p>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/what-is-stable-diffusion--cms-92996"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/92996/preview_image/Tut__3315_Stable_Diffusion_by_MissChatz_PREV_c.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is Stable Diffusion?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_2020_01_MissChatz_Logo_Mid_400.png 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">MissChatz</div>
<div class="roundup-block__published-date">06 Jan 2024</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/what-is-midjourney--cms-107412"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/posts/107412/preview_image/preview_template_mid.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is Midjourney?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Abbey Esparza</div>
<div class="roundup-block__published-date">14 Nov 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/what-is-adobe-firefly--cms-107179"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2760/posts/107179/preview_image/AdobeFirefly_ID_Preview.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is Adobe Firefly?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Ashlee Harrell</div>
<div class="roundup-block__published-date">18 Sep 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/what-is-limewire--cms-107950"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107950/preview_image/preview_template.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107950/preview_image/preview_template.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/107950/preview_image/preview_template.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/107950/preview_image/preview_template.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/posts/107950/preview_image/preview_template.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/posts/107950/preview_image/preview_template.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What Is LimeWire?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Abbey Esparza</div>
<div class="roundup-block__published-date">05 Oct 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/best-ai-tips-and-tricks-for-creatives--cms-108067"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/48/posts/108067/preview_image/ai_tips.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/48/posts/108067/preview_image/ai_tips.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/48/posts/108067/preview_image/ai_tips.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/48/posts/108067/preview_image/ai_tips.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/48/posts/108067/preview_image/ai_tips.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/48/posts/108067/preview_image/ai_tips.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Best AI Tips and Tricks for Creatives</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Maria Villanueva</div>
<div class="roundup-block__published-date">26 Oct 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/how-the-content-authenticity-initiative-is-changing-the-game--cms-108140"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/108140/preview_image/preview_template.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/108140/preview_image/preview_template.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/posts/108140/preview_image/preview_template.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/posts/108140/preview_image/preview_template.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/posts/108140/preview_image/preview_template.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/posts/108140/preview_image/preview_template.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">How the Content Authenticity Initiative Is Changing the Game</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1990/profiles/20506/profileImage/small.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1990/profiles/20506/profileImage/small.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Abbey Esparza</div>
<div class="roundup-block__published-date">09 Nov 2023</div>
</div>
</div>
</div>
</div></a></li>
</ul>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/108551/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108551/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108551/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/108551/a2t.img" width="1" /></div></content>
<published>2025-08-01 18:20:45 UTC</published>
<updated>2025-08-01 18:20:45 UTC</updated>
<author>
<name>Maria Villanueva</name>
</author>
</entry>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/cms-109195</id>
<published>2025-06-15T19:34:15+00:00</published>
<link rel="alternate" type="text/html" href="https://webdesign.tutsplus.com/svg-viewer--cms-109195t"/>
<title>How to create an SVG viewer in HTML, CSS, and JavaScript</title>
<content type="html"><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="i91s">
<p>Our SVG viewer will have the following features:</p>
<ul>
<li><span style="text-align:-webkit-match-parent">An editor that allows us to write, paste, and edit SVG code</span></li>
<li><span style="text-align:-webkit-match-parent">A validation mechanism that checks if the SVG Code is valid</span></li>
<li><span style="text-align:-webkit-match-parent">A preview area where we’ll see the SVG in real-time</span></li>
<li><span style="text-align:-webkit-match-parent">An export feature that will allow us to export the SVG</span></li>
</ul>
<p><span>So, by the end of this tutorial, we’ll have something like this:</span></p>
<p><iframe src="https://codepen.io/tutsplus/embed/MYaKMYG?default-tab=result" width="850" height="800" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy">
</iframe></p>
<p>The SVG editor will have a text area to add, edit, or paste the SVG code.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table html"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"editor"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"editor-header"</span><span style="color: #f4bf75">&gt;</span>SVG Code Editor<span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;textarea</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"svgInput"</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">placeholder=</span><span style="color: #90a959">"Paste your SVG code here and watch the magic happen..."</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&gt;&lt;/textarea&gt;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<p>The preview area will have a preview container where the current SVG code will be injected for preview.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table html"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"preview"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"preview-header"</span><span style="color: #f4bf75">&gt;</span>SVG Preview<span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"preview-content"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"previewContainer"</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"preview-container"</span><span style="color: #f4bf75">&gt;&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<h2 id="toc-p95v-html-markup">HTML Markup</h2>
<p>Okay, let’s start with the building blocks. The HTML markup will look like this:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table html"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"main"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;header&gt;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;h1&gt;</span>SVG Preview Tool<span style="color: #f4bf75">&lt;/h1&gt;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;p&gt;</span>Edit, preview, and export clean, scalable vector art<span style="color: #f4bf75">&lt;/p&gt;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/header&gt;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"container"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"editor"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"editor-header"</span><span style="color: #f4bf75">&gt;</span>SVG Code Editor<span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;textarea</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"svgInput"</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">placeholder=</span><span style="color: #90a959">"Paste your SVG code here and watch the magic happen..."</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&gt;&lt;/textarea&gt;</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"preview"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"preview-header"</span><span style="color: #f4bf75">&gt;</span>SVG Preview<span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"preview-content"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-19" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>19</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"previewContainer"</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"preview-container"</span><span style="color: #f4bf75">&gt;&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-20" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>20</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-21" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>21</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-22" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>22</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-23" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>23</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-24" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>24</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;button</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"exportBtn"</span><span style="color: #f4bf75">&gt;</span>Export SVG<span style="color: #f4bf75">&lt;/button&gt;</span>
</pre></td>
</tr>
<tr id="line-25" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>25</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<h2 id="toc-8ulw-styling-with-css">Styling with CSS</h2>
<p>As you saw from the final demo, we want the editor and the preview to appear side by side on large screens and stack vertically on small devices. We'll achieve this layout using Flexbox and media queries. </p>
<p>Let's begin by applying some basic styles to the <code>&lt;body&gt;</code> and <code>&lt;header&gt;</code> elements as shown below.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #aa759f">@import</span> <span style="color: #90a959">url("https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&amp;display=swap")</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">*</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">padding</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">box-sizing</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">border-box</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">body</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">display</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">flex</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">min-height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100vh</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">justify-content</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">padding</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-family</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">"DM Mono"</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">monospace</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">header</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">max-width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">420px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-19" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>19</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">text-align</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-20" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>20</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin-bottom</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">40px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-21" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>21</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-22" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>22</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-23" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>23</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">h1</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-24" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>24</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-size</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">30px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-25" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>25</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-weight</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">700</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-26" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>26</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin-bottom</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">8px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-27" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>27</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-28" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>28</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-29" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>29</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">header</span> <span style="color: #f4bf75">p</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-30" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>30</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-size</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">18px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-31" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>31</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>We'll apply the following styles to ensure all elements are stacked vertically. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.main</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">display</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">flex</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">flex-direction</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">column</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">align-items</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">gap</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">24px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">max-width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">1000px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">90vh</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">min-height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">700px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin-top</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">50px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.container</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">display</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">flex</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">calc</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">100%</span> <span style="color: #d0d0d0;background-color: #151515">-</span> <span style="color: #90a959">84px</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">gap</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>We also want the text editor and the preview container to fill the available height of their parent containers.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.editor</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">1px</span> <span style="color: #d0d0d0;background-color: #151515">solid</span> <span style="color: #90a959">#7287f2</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.editor</span><span style="color: #d0d0d0">,</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.preview</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">50%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">display</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">flex</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">flex-direction</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">column</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border-radius</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">16px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">overflow</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">hidden</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">linear-gradient</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">135deg</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">#667eea</span> <span style="color: #90a959">0%</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">#764ba2</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.editor-header</span><span style="color: #d0d0d0">,</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.preview-header</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">padding</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">12px</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-weight</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">600</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-19" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>19</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-size</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">14px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-20" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>20</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">text-align</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-21" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>21</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-22" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>22</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #f4bf75">white</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-23" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>23</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-24" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>24</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-25" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>25</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-26" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>26</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">textarea</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-27" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>27</pre></td>
<td class="rouge-code"><pre> <span style="color: #949494">/* width: 100%; */</span>
</pre></td>
</tr>
<tr id="line-28" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>28</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-29" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>29</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">none</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-30" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>30</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">padding</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-31" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>31</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-size</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">13px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-32" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>32</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">resize</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">none</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-33" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>33</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">#2e3138</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-34" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>34</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #f4bf75">white</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-35" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>35</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">overflow-y</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">auto</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-36" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>36</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-37" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>37</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-38" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>38</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">textarea</span><span style="color: #d0d0d0;background-color: #151515">:focus</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-39" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>39</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">outline</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">none</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-40" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>40</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-41" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>41</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-42" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>42</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.preview-container</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-43" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>43</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-44" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>44</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-45" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>45</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border-radius</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">16px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-46" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>46</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background-color</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">#f9fafb</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-47" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>47</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">overflow-y</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">auto</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-48" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>48</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-49" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>49</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-50" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>50</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.preview-content</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-51" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>51</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">flex</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">1</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-52" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>52</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">padding</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">16px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-53" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>53</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">overflow</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">hidden</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-54" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>54</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-55" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>55</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-56" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>56</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.svg-container</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-57" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>57</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">display</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">flex</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-58" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>58</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">justify-content</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-59" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>59</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">overflow</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">hidden</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-60" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>60</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Finally, let's style the export button, add styles for displaying error messages, and apply media queries for responsiveness. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.error-message</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">#dc2626</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">#fef2f2</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">1px</span> <span style="color: #d0d0d0;background-color: #151515">solid</span> <span style="color: #90a959">#fca5a5</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">padding</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">16px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border-radius</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">6px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-size</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">13px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">button</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin-top</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">40px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">linear-gradient</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">135deg</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">#667eea</span> <span style="color: #90a959">0%</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">#764ba2</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #f4bf75">white</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">padding</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">12px</span> <span style="color: #90a959">30px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">none</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border-radius</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">8px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">cursor</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">pointer</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-19" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>19</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">150px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-20" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>20</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-21" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>21</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-22" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>22</pre></td>
<td class="rouge-code"><pre><span style="color: #aa759f">@media</span> <span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">max-width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">768px</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-23" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>23</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">body</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-24" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>24</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">padding</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-25" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>25</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-26" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>26</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-27" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>27</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">.main</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-28" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>28</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-29" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>29</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100vh</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-30" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>30</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-31" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>31</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-32" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>32</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">.container</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-33" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>33</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">flex-direction</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">column</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-34" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>34</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-35" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>35</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-36" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>36</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-37" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>37</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">.editor</span><span style="color: #d0d0d0">,</span>
</pre></td>
</tr>
<tr id="line-38" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>38</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">.preview</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-39" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>39</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-40" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>40</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">50%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-41" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>41</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-42" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>42</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Now the SVG tool interface looks like this:</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png" alt="Svg viewer Tool" loading="lazy" width="870px" height="641px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png" alt="Svg viewer Tool" loading="lazy" width="650px" height="480px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png" alt="Svg viewer Tool" loading="lazy" width="380px" height="283px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/posts/109195/image-upload/Svg_viewer.png 2x"></figure>
<h2 id="toc-ipes-javascript-functionality">JavaScript functionality</h2>
<p>In this section, we'll perform some SVG code validation to ensure that any SVG code added to the editor is parsed before being displayed.</p>
<p>We'll also add a sample SVG code in the editor and display it in the preview area by default.</p>
<p>Let's start by getting the elements from the DOM and assigning them to variables for easy access.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">svgInput</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">svgInput</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">previewContainer</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">previewContainer</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">exportBtn</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">exportBtn</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
</tbody></table></div>
<h3 id="toc-3hhf-svg-code-validation">SVG Code Validation</h3>
<p>The next step is to ensure that the SVG code is valid before adding it for preview. Create a function called <code>loadSVG()</code> that takes an SVG string as an argument. </p>
<p>Inside this function, we will first check if the SVG string is empty. If its empty, we'll display an error message.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">function</span> <span style="color: #d0d0d0;background-color: #151515">loadSVG</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">svgCode</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">previewContainer</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">innerHTML</span> <span style="color: #d0d0d0">=</span> <span style="color: #90a959">""</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #aa759f">if </span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0">!</span><span style="color: #d0d0d0;background-color: #151515">svgCode</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">trim</span><span style="color: #d0d0d0">())</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">showErrorMessage</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">Enter SVG code to see preview</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">return</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}}</span>
</pre></td>
</tr>
</tbody></table></div>
<p><span>The second form of validation will be done using the <code>DOMParser</code> to ensure the SVG Code is well formatted XML code.</span></p>
<div class="callout-block">
<span class="callout-icon callout-info"></span>
<div class="callout-message">
<code>DOMParser</code> is an inbuilt interface in JavaScript that allows us to convert XML or HTML strings into a DOM Document object. Once the string is parsed into a DOM, you can query it using standard DOM methods like querySelector, etc. </div>
</div>
<p><span>To parse the XML, first create an instance of the <code>DOMParser</code> API. Then, parse the SVG string using the <code>ParseFromString()</code> method and set "image/svg+xml" as the MIME type.</span></p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">parser</span> <span style="color: #d0d0d0">=</span> <span style="color: #aa759f">new</span> <span style="color: #f4bf75">DOMParser</span><span style="color: #d0d0d0">();</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">doc</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">parser</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">parseFromString</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">svgCode</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">"</span><span style="color: #90a959">image/svg+xml</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Check for errors by querying the <code>&lt;parserror&gt;</code> element. If there are no errors, we will extract the <code>&lt;svg&gt;</code> element and inject it into the preview.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">function</span> <span style="color: #d0d0d0;background-color: #151515">loadSVG</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">svgCode</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">previewContainer</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">innerHTML</span> <span style="color: #d0d0d0">=</span> <span style="color: #90a959">""</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">if </span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0">!</span><span style="color: #d0d0d0;background-color: #151515">svgCode</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">trim</span><span style="color: #d0d0d0">())</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">showErrorMessage</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">Enter SVG code to see preview</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">return</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">try</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">parser</span> <span style="color: #d0d0d0">=</span> <span style="color: #aa759f">new</span> <span style="color: #f4bf75">DOMParser</span><span style="color: #d0d0d0">();</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">doc</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">parser</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">parseFromString</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">svgCode</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">"</span><span style="color: #90a959">image/svg+xml</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">parserError</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">doc</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">querySelector</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">parsererror</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">if </span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">parserError</span><span style="color: #d0d0d0">)</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">throw</span> <span style="color: #aa759f">new</span> <span style="color: #f4bf75">Error</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">XML parsing error: </span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">+</span> <span style="color: #d0d0d0;background-color: #151515">parserError</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">textContent</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">svgElement</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">doc</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">querySelector</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">svg</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">if </span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0">!</span><span style="color: #d0d0d0;background-color: #151515">svgElement</span><span style="color: #d0d0d0">)</span> <span style="color: #aa759f">throw</span> <span style="color: #aa759f">new</span> <span style="color: #f4bf75">Error</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">No valid SVG element found</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">container</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">createElement</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">div</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">container</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">className</span> <span style="color: #d0d0d0">=</span> <span style="color: #90a959">"</span><span style="color: #90a959">svg-container</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-19" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>19</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">container</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">innerHTML</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">svgCode</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-20" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>20</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">previewContainer</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">appendChild</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">container</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-21" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>21</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span> <span style="color: #aa759f">catch </span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">error</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-22" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>22</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-23" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>23</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">showErrorMessage</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">Invalid SVG code: </span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">+</span> <span style="color: #d0d0d0;background-color: #151515">error</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">message</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-24" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>24</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-25" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>25</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<h3 id="toc-5goh-add-event-listeners">Add event listeners</h3>
<p>We now have a function that validates and displays the SVG code, so the next step is to ensure it runs before the SVG code in the input changes.</p>
<p>Add two event listeners to the textarea element as shown below:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">svgInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">addEventListener</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">input</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">function </span><span style="color: #d0d0d0">()</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">loadSVG</span><span style="color: #d0d0d0">(</span><span style="color: #aa759f">this</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">});</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">svgInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">addEventListener</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">paste</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">function </span><span style="color: #d0d0d0">()</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">loadSVG</span><span style="color: #d0d0d0">(</span><span style="color: #aa759f">this</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">});</span>
</pre></td>
</tr>
</tbody></table></div>
<p>The input event will be triggered whenever you type, delete, or change the contents of the text area, while the paste event will be triggered when you paste the content to the text area.</p>
<h2 id="toc-mhnz-load-sample-svg">Load sample SVG and export SVG</h2>
<p>The final step is to ensure that we have a default SVG when the tool opens. This is great to ensure the user sees how the tool works. </p>
<p>Create a function called <code>loadDefaultSVG()</code> which looks like this:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">function</span> <span style="color: #d0d0d0;background-color: #151515">loadDefaultSVG</span><span style="color: #d0d0d0">()</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">sampleSvg</span> <span style="color: #d0d0d0">=</span> <span style="color: #90a959">`&lt;svg xmlns="https://www.w3.org/2000/svg" width="160" height="190" viewBox="0 0 60 60"&gt;&lt;defs&gt;&lt;style&gt;.cls-1{fill:#87e64b;}&lt;/style&gt;&lt;/defs&gt;&lt;circle class="cls-1" cx="25.56" cy="61.15" r="2.86"/&gt;&lt;path class="cls-1" d="M42,41.65l-16.13,1.73c-.3.03-.45-.34-.21-.53l15.78-12.29c1.02-.84,1.68-2.14,1.4-3.54-.28-2.14-2.05-3.54-4.29-3.26l-17.15,2.51c-.3.04-.46-.34-.22-.53l17-12.98c3.35-2.61,3.63-7.73.56-10.71-2.79-2.79-7.27-2.7-10.06.09L1.29,30.01c-1.02,1.12-1.49,2.61-1.21,4.19.47,2.52,2.98,4.19,5.5,3.73l14.77-3.01c.32-.07.49.36.22.54l-16.38,10.49c-2.05,1.3-2.98,3.63-2.33,5.96.65,3.07,3.73,4.84,6.71,4.1l24.49-6.03c.28-.07.48.25.3.47l-3.82,4.72c-1.02,1.3.65,3.07,2.05,2.05l12.58-10.34c2.24-1.86.75-5.5-2.14-5.22h-.03Z"/&gt;&lt;/svg&gt;`</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">svgInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">sampleSvg</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">loadSVG</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">sampleSvg</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">window</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">addEventListener</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">load</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">loadDefaultSVG</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
</tbody></table></div>
<p>In the code above, we set a default SVG string as the value of the editor (in the textarea), then we call the <code>loadSVG()</code> function which in turn renders the SVG in the preview area.</p>
<div class="callout-block">
<span class="callout-icon callout-tip"></span>
<div class="callout-message">I’ve used the Envato “creative spark” for this example, but you can choose any default SVG you like</div>
</div>
<h3 id="toc-72w8-export-svg">Export SVG</h3>
<p>To export the SVG, we'll package it as an SVG file and trigger a download when the export button is clicked. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">function</span> <span style="color: #d0d0d0;background-color: #151515">exportSVG</span><span style="color: #d0d0d0">()</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">blob</span> <span style="color: #d0d0d0">=</span> <span style="color: #aa759f">new</span> <span style="color: #f4bf75">Blob</span><span style="color: #d0d0d0">([</span><span style="color: #d0d0d0;background-color: #151515">svgInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span><span style="color: #d0d0d0">],</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">type</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">image/svg+xml</span><span style="color: #90a959">"</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">});</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">url</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">URL</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">createObjectURL</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">blob</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">a</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">createElement</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">a</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">a</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">href</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">url</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">a</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">download</span> <span style="color: #d0d0d0">=</span> <span style="color: #90a959">"</span><span style="color: #90a959">svg-viewer.svg</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">body</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">appendChild</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">a</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">a</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">click</span><span style="color: #d0d0d0">();</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">body</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">removeChild</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">a</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">URL</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">revokeObjectURL</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">url</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">exportBtn</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">addEventListener</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">click</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">exportSVG</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
</tbody></table></div>
<h2 id="toc-xok4-final-demo">Final demo</h2>
<p>And we’re done! Here’s a reminder of the final codepen demo:</p>
<p><iframe src="https://codepen.io/tutsplus/embed/MYaKMYG?default-tab=result" width="850" height="800" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy">
</iframe></p>
<p>We built a fully functional SVG viewer using HTML, CSS, and JavaScript. This simple, yet powerful tool will allow you to preview and export your SVG graphics for use in your projects. </p>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/109195/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109195/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109195/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109195/a2t.img" width="1" /></div></content>
<published>2025-07-21 10:04:15 UTC</published>
<updated>2025-07-21 10:04:15 UTC</updated>
<author>
<name>Esther Vaati</name>
</author>
</entry>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/cms-109200</id>
<published>2025-06-27T06:31:59+00:00</published>
<link rel="alternate" type="text/html" href="https://webdesign.tutsplus.com/liquid-glass-effect-svg-filters--cms-109200t"/>
<title>How to create a Liquid Glass effect with SVG filters</title>
<content type="html"><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ihy8">
<p>In June 2025 Apple <a href="https://www.apple.com/newsroom/2025/06/apple-introduces-a-delightful-and-elegant-new-software-design/" target="_blank" rel="noopener">revealed its new visual language</a>, along with the beta launch of iOS 26. Liquid Glass was the name given to their “new and expressive material”, bending light, and distorting UIs. It received a mixed response, and just weeks after its launch we’ve seen Apple <a href="https://techcrunch.com/2025/07/07/ios-26-beta-3-dials-back-liquid-glass/" target="_blank" rel="noopener">dial down their glassy effects</a> to some degree.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/30/posts/109200/image-upload/glass.jpg" alt="liquid glass" loading="lazy" width="870px" height="497px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/30/posts/109200/image-upload/glass.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/109200/image-upload/glass.jpg" alt="liquid glass" loading="lazy" width="650px" height="373px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/109200/image-upload/glass.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/109200/image-upload/glass.jpg" alt="liquid glass" loading="lazy" width="380px" height="222px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/109200/image-upload/glass.jpg 2x"></figure>
<p>We’ve covered CSS glass effects on Tuts+ before, but today we’re going to do things a little differently. Let’s dive into SVG filters!</p>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/tutorials/how-to-create-a-frosted-glass-effect-in-css--cms-32535"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/32535/preview_image/pre-glass.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/32535/preview_image/pre-glass.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/32535/preview_image/pre-glass.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/32535/preview_image/pre-glass.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/32535/preview_image/pre-glass.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/32535/preview_image/pre-glass.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">2 Ways to Create a CSS Frosted Glass Effect</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/265/profileImage/adi.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/265/profileImage/adi.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/265/profileImage/adi.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/265/profileImage/adi.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/265/profileImage/adi.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/265/profileImage/adi.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Adi Purdila</div>
<div class="roundup-block__published-date">19 Apr 2023</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/tutorials/glassmorphism-generator-tool--cms-109168"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/109168/preview_image/glass.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/30/posts/109168/preview_image/glass.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/109168/preview_image/glass.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/109168/preview_image/glass.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/109168/preview_image/glass.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/109168/preview_image/glass.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">How to create a glassmorphism generator tool </div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/profiles/20400/profileImage/Tn2cD3Wq_400x400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Esther Vaati</div>
<div class="roundup-block__published-date">27 May 2025</div>
</div>
</div>
</div>
</div></a></li>
</ul>
</div><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="i018">
<h2 id="toc-ipnm-what-is-an-svg-filter">What is an SVG filter?</h2>
<p>CSS provides us with the <code>filter</code> property that allows us to apply visual effects such as blur, brightness, contrast, saturation, and other effects to HTML elements. </p>
<p>However, for more advanced, almost cinematic effects, SVG filters are a better choice. Unlike CSS filters, SVG filters are composed of modular building blocks known as <em>primitives</em>. When these primitives are combined, they produce powerful visual effects which would not be possible with CSS alone.</p>
<p>Some of the effects that can be applied using filters include custom blurs, water or ripple effects, realistic drop shadows, lighting effects, etc. </p>
<p>SVG filters are created using the <code>&lt;filter&gt;</code> element whose syntax looks like this:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;filter&gt;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;/filter&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Just like any other SVG element, the <code>&lt;filter&gt;</code> element accepts several attributes that control how it behaves and how much space it covers. These attributes determine factors such as position, size, and blur of the filter.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;svg</span> <span style="color: #6a9fb5">width=</span><span style="color: #90a959">"200"</span> <span style="color: #6a9fb5">height=</span><span style="color: #90a959">"200"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;filter</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"myFilter"</span> <span style="color: #6a9fb5">x=</span><span style="color: #90a959">"0"</span> <span style="color: #6a9fb5">y=</span><span style="color: #90a959">"0"</span> <span style="color: #6a9fb5">width=</span><span style="color: #90a959">"100%"</span> <span style="color: #6a9fb5">height=</span><span style="color: #90a959">"100%"</span> <span style="color: #6a9fb5">filterUnits=</span><span style="color: #90a959">"objectBoundingBox"</span> <span style="color: #6a9fb5">primitiveUnits=</span><span style="color: #90a959">"userSpaceOnUse"</span><span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;/svg&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<ul>
<li><span style="text-align:-webkit-match-parent"><code>id</code>: used to identify the filter.</span></li>
<li><span style="text-align:-webkit-match-parent"><code>x</code> , <code>y</code> are the positions of the filter relative to the target element.</span></li>
<li><span style="text-align:-webkit-match-parent"><code>width</code> and <code>height</code>: specify the size to be covered by the filter.</span></li>
<li><span style="text-align:-webkit-match-parent"><code>filterUnits</code> is the coordinate system for x, y, width, and height.</span></li>
<li><span style="text-align:-webkit-match-parent"><code>primitiveUnits</code> defines the coordinate system inside the filter primitives</span></li>
</ul>
<p>Inside the <code>&lt;filter&gt;</code> element is where you define the primitives. Primitives are also SVG elements and they include <code>&lt;feGaussianBlur&gt;</code>, <code>&lt;feOffset&gt;</code>, <code>&lt;feColorMatrix&gt;</code>, <code>&lt;feDisplacementMap&gt;</code>, etc.</p>
<p>In this tutorial, we’ll only focus on the <code>&lt;feGaussianBlur&gt;</code> and <code>&lt;feDisplacementMap&gt;</code> filters. These two are commonly used together to create effects such as glass distortion, ripples, and frosted backgrounds.</p>
<p>For example, to blur an element, we use the <code>&lt;feGaussianBlur&gt;</code> primitive which looks like this:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;feGaussianBlur</span> <span style="color: #6a9fb5">in=</span><span style="color: #90a959">"SourceGraphic"</span> <span style="color: #6a9fb5">stdDeviation=</span><span style="color: #90a959">"5"</span> <span style="color: #6a9fb5">result=</span><span style="color: #90a959">"blur"</span> <span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr></tbody></table></div>
<p>The <code>in</code> attribute defines the input source of the filter primitive while the <code>stDeviation</code> determines the strength of the blur. Once we define the SVG filter, we’ll apply it to an HTML element or another SVG by referencing its id using the <code>filter</code> property.</p>
<h3 id="toc-imsi-in-action">In action</h3>
<p>So for example, suppose we have a green SVG circle that looks like this:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;svg</span> <span style="color: #6a9fb5">width=</span><span style="color: #90a959">"200"</span> <span style="color: #6a9fb5">height=</span><span style="color: #90a959">"200"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;circle</span> <span style="color: #6a9fb5">cx=</span><span style="color: #90a959">"100"</span> <span style="color: #6a9fb5">cy=</span><span style="color: #90a959">"100"</span> <span style="color: #6a9fb5">r=</span><span style="color: #90a959">"80"</span> <span style="color: #6a9fb5">fill=</span><span style="color: #90a959">"green"</span> <span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;/svg&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<p><iframe src="https://codepen.io/tutsplus/embed/xbwKqGm?default-tab=result" width="850" height="400" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy">
</iframe></p>
<p>If we needed to apply a blur to the SVG circle, we would create a filter containing a <code>&lt;feGaussianBlur&gt;</code> primitive, and then apply the filter to the circle as shown below.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;svg</span> <span style="color: #6a9fb5">width=</span><span style="color: #90a959">"200"</span> <span style="color: #6a9fb5">height=</span><span style="color: #90a959">"200"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;filter</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"blur"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;feGaussianBlur</span> <span style="color: #6a9fb5">in=</span><span style="color: #90a959">"SourceGraphic"</span> <span style="color: #6a9fb5">stdDeviation=</span><span style="color: #90a959">"20"</span><span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/filter&gt;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;circle</span> <span style="color: #6a9fb5">cx=</span><span style="color: #90a959">"100"</span> <span style="color: #6a9fb5">cy=</span><span style="color: #90a959">"100"</span> <span style="color: #6a9fb5">r=</span><span style="color: #90a959">"80"</span> <span style="color: #6a9fb5">fill=</span><span style="color: #90a959">"green"</span> <span style="color: #6a9fb5">filter=</span><span style="color: #90a959">"url(#blur)"</span><span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;/svg&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<p><iframe src="https://codepen.io/tutsplus/embed/wBKwJKo?default-tab=result" width="850" height="400" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy">
</iframe></p>
<p>SVG primitives typically have both an input(<code>in</code>) as well as an output(<code>result</code>). The output of one primitive is used as input of another primitive hence creating a chain of primitives for more advanced effects.</p>
<p>In this code snippet, <code>in=sourceGraphic</code> means that the blur will be applied to the original graphic, in this case, the green circle, while the <code>stdDeviation</code> attribute controls the strength of the blur. The higher the value, the more intense and spread out the blur effect becomes.</p>
<h3 id="toc-poky-feimage-filter-element">feImage Filter Element</h3>
<p>The <code>&lt;feImage&gt;</code> filter primitive is used to bring an external image or SVG fragment into the filter chain. It does not apply any effects, rather it loads an image from a URL or base64 data. </p>
<p>The output is then used by other primitives like the <code>&lt;feDisplacementMap&gt;</code> to create custom effects such as distortions, lighting, blending, etc. </p>
<p><span>For example, to load an image URL into the <code>&lt;feImage&gt;</code> filter primitive, we’ll have something like this:</span></p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;feImage</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">href=</span><span style="color: #90a959">"https://example.com/image.png"</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">x=</span><span style="color: #90a959">"0"</span> <span style="color: #6a9fb5">y=</span><span style="color: #90a959">"0"</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">width=</span><span style="color: #90a959">"100%"</span> <span style="color: #6a9fb5">height=</span><span style="color: #90a959">"100%"</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">result=</span><span style="color: #90a959">"map"</span> <span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<h3 id="toc-poky-feimage-filter-element">
<code>feDisplacementMap</code> Filter Element</h3>
<p>The <code>&lt;feDisplacementMap&gt;</code> filter primitive is responsible for creating distortion effects in SVG. It does this by distorting the color values using the pixels of a displacement map( loaded using the <code>&lt;feImage &gt;</code> filter) to shift pixels of the original graphic.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;feDisplacementMap</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"disp"</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">in=</span><span style="color: #90a959">"blur"</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">in2=</span><span style="color: #90a959">"map"</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">scale=</span><span style="color: #90a959">"0.8"</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">xChannelSelector=</span><span style="color: #90a959">"R"</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #6a9fb5">yChannelSelector=</span><span style="color: #90a959">"G"</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&gt;&lt;/feDisplacementMap&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<p>For example, in the code above, the <code>&lt;feDisplacementMap&gt;</code> filter primitive takes 2 inputs where:</p>
<ul>
<li>
<code>in="blur"</code> is the output of the Gaussian blur</li>
<li>
<code>in2="map"</code> is the displacement map image</li>
</ul>
<p>The <code>xChannelSelector</code> attribute specifies which color channel from the displacement image is used to displace pixels along the x-axis while the <code>yChannelSelector</code> attribute specifies which color channel from the displacement image is used to displace pixels along the y-axis.</p>
<p>These channels can either be R(Red), G(Green) B(Blue) and A(Alpha). The scale attributes determine the intensity of the distortion effect.</p>
<p>Now that we know how SVG filters work and how to create them, we can create a liquid glass distortion effect and apply it to an HTML element.</p>
<h2 id="toc-2in2-create-glass-button-with-svg-filters">Create a Liquid Glass button with SVG filters</h2>
<p>We’ll start with the HTML markup, a simple button and a span element.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;button</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"glass-button"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;span&gt;</span>CRYSTAL<span style="color: #f4bf75">&lt;/span&gt;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;/button&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<h2 id="toc-hiou-styling-with-css">Styling with CSS</h2>
<p><span>To create a realistic glass button, we need three key ingredients:</span></p>
<ul>
<li><span>A background blur to blur whatever is behind the button and create a translucent frosted look. We will achieve this using the <code>feGaussian</code> filter. </span></li>
<li><span>A background image will enhance the realism of the blur. </span></li>
<li><span>Transparency; we need to make the button partially see-through. Without the semi-transparent background, the button would be solid, hence hiding the blur effect. </span></li>
</ul>
<p>Let’s add a background image to the page.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">body</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">150vh</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">url("https://images.unsplash.com/photo-1683657535824-5b570c7a1749?q=80&amp;w=764&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D")</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background-size</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">cover</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>We’ll also add a simple keyframe animation that will change the background’s position over time, hence creating a smooth floating animation.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">body</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">150vh</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">url("https://images.unsplash.com/photo-1683657535824-5b570c7a1749?q=80&amp;w=764&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D")</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background-size</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">cover</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">animation</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">floatBG</span> <span style="color: #90a959">15s</span> <span style="color: #d0d0d0;background-color: #151515">ease-in-out</span> <span style="color: #d0d0d0;background-color: #151515">infinite</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre><span style="color: #aa759f">@keyframes</span> <span style="color: #d0d0d0;background-color: #151515">floatBG</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #151515;background-color: #ac4142">0</span><span style="color: #d0d0d0">%,</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #151515;background-color: #ac4142">100</span><span style="color: #d0d0d0">%</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background-position</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre> <span style="color: #151515;background-color: #ac4142">25</span><span style="color: #d0d0d0">%</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background-position</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">30%</span> <span style="color: #90a959">70%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre> <span style="color: #151515;background-color: #ac4142">50</span><span style="color: #d0d0d0">%</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background-position</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">70%</span> <span style="color: #90a959">30%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-19" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>19</pre></td>
<td class="rouge-code"><pre> <span style="color: #151515;background-color: #ac4142">75</span><span style="color: #d0d0d0">%</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-20" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>20</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background-position</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">40%</span> <span style="color: #90a959">60%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-21" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>21</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-22" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>22</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Add these styles to the button. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.glass-button</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">position</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">fixed</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">top</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">50%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">left</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">50%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">transform</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">translate</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">-50%</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">-50%</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">cursor</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">pointer</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">outline</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">none</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">350px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">180px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">border-radius</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">999px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.glass-button</span> <span style="color: #f4bf75">span</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">font-family</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">"Orbitron"</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">sans-serif</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #f4bf75">white</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">font-size</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">2.5rem</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">font-weight</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">600</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-19" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>19</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">text-transform</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">uppercase</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-20" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>20</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">letter-spacing</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">0.1em</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-21" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>21</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-22" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>22</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>We have positioned the button at the center using <code>fixed:position</code> so it stays in place when the background animates. This will ensure the glass effect is visually enhanced.</p>
<p>By default, the button has a solid background, we’ll replace it with a transparent gradient and a semi-transparent border to also enhance the glass illusion.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.glass-button</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">position</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">fixed</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">top</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">50%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">left</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">50%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">transform</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">translate</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">-50%</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">-50%</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">cursor</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">pointer</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">outline</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">none</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">350px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">180px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border-radius</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">999px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">1px</span> <span style="color: #d0d0d0;background-color: #151515">solid</span> <span style="color: #d0d0d0;background-color: #151515">rgba</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0.3</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">linear-gradient</span><span style="color: #d0d0d0">(</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre> <span style="color: #90a959">135deg</span><span style="color: #d0d0d0">,</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">rgba</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0.2</span><span style="color: #d0d0d0">)</span> <span style="color: #90a959">0%</span><span style="color: #d0d0d0">,</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">rgba</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0.08</span><span style="color: #d0d0d0">)</span> <span style="color: #90a959">50%</span><span style="color: #d0d0d0">,</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">rgba</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">255</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0.03</span><span style="color: #d0d0d0">)</span> <span style="color: #90a959">100%</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>So far, the button looks like this:</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png" loading="lazy" width="870px" height="490px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png" loading="lazy" width="650px" height="368px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png" loading="lazy" width="380px" height="219px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/posts/109200/image-upload/glass_button_1_.png 2x"></figure>
<p>We need to make it more <em>glassy</em> by adding SVG filters. </p>
<h3 id="toc-5yus-glass-distortion-filter">Glass distortion </h3>
<p>To create the glass distortion effect with SVGs, we’ll use a combination of blur, displacement, and a texture map. Let’s start by defining the <code>&lt;filter&gt;</code> element where our primitives will be defined. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;svg</span> <span style="color: #6a9fb5">style=</span><span style="color: #90a959">"position: absolute; width: 0; height: 0;"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;filter</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"glassFilter"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/filter&gt;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;/svg&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Next, we’ll add a Gaussian blur to the source graphic using the <code>&lt;feGaussianBlur&gt;</code> primitive. We’ll also ensure it’s available for use in the next chaining process by storing its output in the result attribute. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;feGaussianBlur</span> <span style="color: #6a9fb5">in=</span><span style="color: #90a959">"SourceGraphic"</span> <span style="color: #6a9fb5">stdDeviation=</span><span style="color: #90a959">"0.02"</span> <span style="color: #6a9fb5">result=</span><span style="color: #90a959">"blur"</span> <span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr></tbody></table></div>
<p>A good displacement map image should have high contrast and noticeable color variations. This is important because the distortion depends on the intensity of the color channels.</p>
<p>To ensure the displacement image covers the whole filter area, we have defined x,y, width, and height. Depending on the size of the element the filter will be applied to, you will need to adjust these values to achieve the desired result.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;feImage</span> <span style="color: #6a9fb5">x=</span><span style="color: #90a959">"-50%"</span> <span style="color: #6a9fb5">y=</span><span style="color: #90a959">"-50%"</span> <span style="color: #6a9fb5">width=</span><span style="color: #90a959">"200%"</span> <span style="color: #6a9fb5">height=</span><span style="color: #90a959">"200%"</span> <span style="color: #6a9fb5">result=</span><span style="color: #90a959">"map"</span><span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr></tbody></table></div>
<p>As you can see in the <code>&lt;feImage&gt;</code> filter code above, we haven’t set the <code>href</code> directly because the base64-encoded version of the image would be very long. Instead, we’ll use JavaScript to set the <code>href</code> dynamically.</p>
<p>Add this code in your JavaScript file </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">feImage</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">querySelector</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">'</span><span style="color: #90a959">feImage</span><span style="color: #90a959">'</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">fetch</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">'</span><span style="color: #90a959">https://essykings.github.io/JavaScript/map.png</span><span style="color: #90a959">'</span><span style="color: #d0d0d0">)</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">then</span><span style="color: #d0d0d0">((</span><span style="color: #d0d0d0;background-color: #151515">response</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">=&gt;</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">return</span> <span style="color: #d0d0d0;background-color: #151515">response</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">blob</span><span style="color: #d0d0d0">();</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">})</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">then</span><span style="color: #d0d0d0">((</span><span style="color: #d0d0d0;background-color: #151515">blob</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">=&gt;</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">objURL</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">URL</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">createObjectURL</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">blob</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">feImage</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">setAttribute</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">'</span><span style="color: #90a959">href</span><span style="color: #90a959">'</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">objURL</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">});</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Here, we first select the <code>&lt;feImage&gt;</code> element using <code>querySelector</code>, then we fetch the image from a hosted URL, convert the response into a <code>Blob</code> (a binary representation of the image), and then assign the objectURL as the <code>href</code> value of the <code>&lt;feImage&gt;</code>.</p>
<p>We now have the blurred content and the image map, so let’s combine them using the <code>&lt;feDisplacmentMap&gt;</code> filter to get the final glass distortion effect which will be added to the button.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;feDisplacementMap</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"disp"</span> <span style="color: #6a9fb5">in=</span><span style="color: #90a959">"blur"</span> <span style="color: #6a9fb5">in2=</span><span style="color: #90a959">"map"</span> <span style="color: #6a9fb5">scale=</span><span style="color: #90a959">"0.8"</span> <span style="color: #6a9fb5">xChannelSelector=</span><span style="color: #90a959">"R"</span> <span style="color: #6a9fb5">yChannelSelector=</span><span style="color: #90a959">"G"</span><span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr></tbody></table></div>
<p>Now, the final SVG filter looks like this:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table xml"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;svg</span> <span style="color: #6a9fb5">style=</span><span style="color: #90a959">"position: absolute; width: 0; height: 0"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;filter</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"glass"</span> <span style="color: #6a9fb5">x=</span><span style="color: #90a959">"-50%"</span> <span style="color: #6a9fb5">y=</span><span style="color: #90a959">"-50%"</span> <span style="color: #6a9fb5">width=</span><span style="color: #90a959">"200%"</span> <span style="color: #6a9fb5">height=</span><span style="color: #90a959">"200%"</span> <span style="color: #6a9fb5">primitiveUnits=</span><span style="color: #90a959">"objectBoundingBox"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;feImage</span> <span style="color: #6a9fb5">x=</span><span style="color: #90a959">"-50%"</span> <span style="color: #6a9fb5">y=</span><span style="color: #90a959">"-50%"</span> <span style="color: #6a9fb5">width=</span><span style="color: #90a959">"200%"</span> <span style="color: #6a9fb5">height=</span><span style="color: #90a959">"200%"</span> <span style="color: #6a9fb5">result=</span><span style="color: #90a959">"map"</span><span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;feGaussianBlur</span> <span style="color: #6a9fb5">in=</span><span style="color: #90a959">"SourceGraphic"</span> <span style="color: #6a9fb5">stdDeviation=</span><span style="color: #90a959">"0.02"</span> <span style="color: #6a9fb5">result=</span><span style="color: #90a959">"blur"</span><span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;feDisplacementMap</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"disp"</span> <span style="color: #6a9fb5">in=</span><span style="color: #90a959">"blur"</span> <span style="color: #6a9fb5">in2=</span><span style="color: #90a959">"map"</span> <span style="color: #6a9fb5">scale=</span><span style="color: #90a959">"0.8"</span> <span style="color: #6a9fb5">xChannelSelector=</span><span style="color: #90a959">"R"</span> <span style="color: #6a9fb5">yChannelSelector=</span><span style="color: #90a959">"G"</span><span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/filter&gt;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;/svg&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Apply the SVG glass distortion effect on the button using the backdrop-filter property.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">backdrop-filter</span><span style="color: #d0d0d0">:</span> <span style="color: #f4bf75">url</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">#glass</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr></tbody></table></div>
<p>Finally, to enhance the interactivity of the glass button, let’s add a zoom effect on hover. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.glass-button</span><span style="color: #d0d0d0;background-color: #151515">:hover</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">transform</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">translate</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">-50%</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">-50%</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0;background-color: #151515">scale</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">1.05</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<h2 id="toc-vsn6-final-result">Final result</h2>
<p>Here is the final result of the glass button in action:</p>
<p><iframe src="https://codepen.io/tutsplus/embed/VYvZpbY?default-tab=result" width="850" height="600" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy">
</iframe></p>
<h2 id="toc-3ufc-conclusion">Conclusion</h2>
<p>We have seen how powerful SVG filters can be, with just a few SVG filter primitives, we have created a realistic glass distortion effect, similar to Apple’s Liquid Glass effect. Now you can use SVG filters to create visual styles directly in your browser. </p>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/109200/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109200/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109200/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109200/a2t.img" width="1" /></div></content>
<published>2025-07-15 14:17:00 UTC</published>
<updated>2025-07-15 14:17:00 UTC</updated>
<author>
<name>Esther Vaati</name>
</author>
</entry>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/cms-109201</id>
<published>2025-07-07T18:59:04+00:00</published>
<link rel="alternate" type="text/html" href="https://design.tutsplus.com/tutorials/how-to-create-a-coloring-book-with-ai--cms-109201"/>
<title>How to create a coloring book with AI</title>
<content type="html"><figure class="final-product final-product--image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/final_image/tut_how_to_Create_a_Coloring_Book_With_AI_13B.jpg" alt="Final product image" loading="lazy" width="870px" height="809px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/final_image/tut_how_to_Create_a_Coloring_Book_With_AI_13B.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/final_image/tut_how_to_Create_a_Coloring_Book_With_AI_13B.jpg" alt="Final product image" loading="lazy" width="650px" height="605px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/final_image/tut_how_to_Create_a_Coloring_Book_With_AI_13B.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/final_image/tut_how_to_Create_a_Coloring_Book_With_AI_13B.jpg" alt="Final product image" loading="lazy" width="380px" height="354px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/final_image/tut_how_to_Create_a_Coloring_Book_With_AI_13B.jpg 2x"><!--googleoff: index--><figcaption>What You'll Be Creating</figcaption><!--googleon: index--></figure><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ifwj">
<p>Creating coloring book pages has never been easier thanks to <a href="https://elements.envato.com/lp/ai-stack/" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">AI-powered design tools</a>. In this tutorial, <span>and transform text prompts into printable line art</span> using Envato's <a href="https://labs.envato.com/graphics-gen" target="_blank" rel="noopener">GraphicsGen</a>—no drawing skills are required!</p>
<p>Whether you're targeting adults seeking intricate, therapeutic designs or children looking for fun, simple illustrations, this tutorial will help you master the process in just a few minutes.</p>
<p>So stop tracing—let AI do all the work! Let's learn how to create a coloring book with AI.</p>
<h2 id="toc-rs7h-how-to-start-with-envatos-ai-powered-graphicsgen">
<span class="sectionnum">1.</span> What is Envato's GraphicsGen?</h2>
<p>Envato’s GraphicsGen is an AI-powered graphics generator. It lets subscribers turn simple text prompts into illustrations based on 100 different art style choices—everything from flat-style blueprint to 8-bit nostalgia (and more to come!). This means you can use it as an AI coloring book generator.</p>
<h3 id="toc-d6nz-how-to-start-with-envatos-ai-powered-graphicsgen">Where to find Envato’s AI-powered GraphicsGen</h3>
<ol>
<li>
<strong>Subscribe</strong>: Envato's GraphicsGen is available to active subscribers. A valid <a href="https://labs.envato.com/graphics-gen" target="_blank" rel="noopener">subscription is required</a> to unlock the AI tools.</li>
<li>
<strong>Visit Envato</strong>: Open <a href="https://labs.envato.com" target="_blank" rel="noopener">Envato's AI tools</a> in your browser. This is where you’ll find tools like ImageGen, VideoGen, and GraphicsGen.</li>
<li>
<strong>Sign in</strong>: At the top right, use your Envato account credentials to sign in. Once authenticated, you’ll see all the available AI tools.</li>
<li>
<strong>Launch GraphicsGen</strong>: Select <strong>Gen AI &gt; GraphicsGen</strong> from the menu, or go directly to <a href="https://labs.envato.com/graphics-gen" target="_blank" rel="noopener">https://labs.envato.com/graphics-gen</a>. This opens the interface to the AI graphics generator.</li>
</ol>
<figure class="post_image"><a href="https://labs.envato.com/graphics-gen" target="_blank" rel="noopener"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_03.jpg" alt="GraphicsGen Interface preview How to create a coloring book with AI " loading="lazy" width="870px" height="603px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_03.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_03.jpg" alt="GraphicsGen Interface preview How to create a coloring book with AI " loading="lazy" width="650px" height="452px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_03.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_03.jpg" alt="GraphicsGen Interface preview How to create a coloring book with AI " loading="lazy" width="380px" height="267px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_03.jpg 2x"></a></figure>
<h3 id="toc-oq6m-how-does-graphicsgen-work">How does GraphicsGen work?</h3>
<p>At the bottom of the interface, you will see a prompt box. Here, you can select a graphic style from the preset image icons showcased in the gallery or choose one from the dropdown menu in the top right-hand corner.</p>
<p>For example, you can select the <strong>Charming Storybook</strong> art style. Then, add the text description in the prompt box, such as: "Create a highly detailed enchanted forest scene with intricate vines, hidden creatures, and elaborate magical flora, ink outline." Once your prompt is in, hit <strong>Generate</strong>, and the AI coloring book generator delivers a <strong>PNG</strong> graphic in seconds.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_02.jpg" alt="Write prompt to generate image in seconds in GraphicsGen" loading="lazy" width="870px" height="504px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_02.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_02.jpg" alt="Write prompt to generate image in seconds in GraphicsGen" loading="lazy" width="650px" height="379px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_02.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_02.jpg" alt="Write prompt to generate image in seconds in GraphicsGen" loading="lazy" width="380px" height="225px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_02.jpg 2x"></figure>
<h3 id="toc-yz6c-what-graphic-outputs-does-graphicgen-offer">What graphic outputs does GraphicsGen offer?</h3>
<p>GraphicsGen offers royalty-free, high-resolution PNG files under your subscription, making them perfect for web, print, and branding projects.</p>
<p>It's part of <a href="https://elements.envato.com/learn/envato-ai-features" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Envato’s suite of AI tools</a>, including ImageGen for raster images, VideoGen for short video clips, VoiceGen for text-to-speech, and more. These tools make it easy to quickly generate on-brand assets.</p>
<div class="callout-block">
<span class="callout-icon callout-do"></span>
<div class="callout-message">Can you edit your newly generated graphic? Yes! Just click on the pencil icon in the bottom-right corner of your graphic. This will take you directly to <a href="https://labs.envato.com/image-edit" target="_blank" rel="noopener">ImageEdit</a>, where you can easily <a href="https://design.tutsplus.com/tutorials/how-to-edit-images-with-ai--cms-109178" target="_blank" rel="noopener">edit your image with AI</a>.</div>
</div>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_04.jpg" alt="Ai render from GraphicGen prompt" loading="lazy" width="870px" height="492px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_04.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_04.jpg" alt="Ai render from GraphicGen prompt" loading="lazy" width="650px" height="370px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_04.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_04.jpg" alt="Ai render from GraphicGen prompt" loading="lazy" width="380px" height="220px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_04.jpg 2x"></figure>
<h2 id="toc-otb4-what-is-the-difference-between-adult-vs-kids-coloring-books">
<span class="sectionnum">2.</span> What is the difference between adult vs. kids' coloring books?</h2>
<p>Before we begin creating, let’s explore the differences in designing coloring pages for adults versus kids. There are a few key distinctions:</p>
<h4 id="toc-m7pb-a-level-of-detail">A. Level of detail</h4>
<ul>
<li>
<strong>Adults</strong>: Pages tend to be more intricate, featuring numerous small shapes, fine-line artwork, and repeating patterns (think filigree or floral clusters). This encourages focus, mindfulness, and a challenge as they fill in small spaces.</li>
<li>
<strong>Kids</strong>: Simpler, bolder shapes with larger areas to color—animals, trucks, basic cartoon scenes—so little hands can stay within the lines and have a quick feel of accomplishment.</li>
</ul>
<h4 id="toc-kidj-b-line-weight-clarity">B. Line weight &amp; clarity</h4>
<ul>
<li>
<strong>Adults</strong>: Thinner lines and minor variations in stroke weight give an elegant, delicate feel.</li>
<li>
<strong>Kids</strong>: Thicker, uniform outlines keep the images clear and are forgiving if a crayon drifts outside the edge.</li>
</ul>
<h4 id="toc-so47-c-themes-and-imagery">C. Themes and imagery</h4>
<ul>
<li>
<strong>Adults</strong>: More sophisticated or abstract themes, like botanical gardens, fantasy landscapes, travel scenes, or Art Deco patterns.</li>
<li>
<strong>Kids</strong>: Fun, playful, and familiar subjects, like cartoon animals or simple holiday scenes. </li>
</ul>
<h4 id="toc-pwo1-d-page-layout-composition">D. Page layout &amp; composition</h4>
<ul>
<li>
<strong>Adults</strong>: Often single-page spreads with repeating motifs or borderless compositions.</li>
<li>
<strong>Kids</strong>: More contained scenes (with frames or borders).</li>
</ul>
<h4 id="toc-7rk2-e-cognitive-roles">E. Cognitive roles</h4>
<ul>
<li>
<strong>Adults</strong>: Promotes stress relief, mindfulness, and creative exploration. The “busy” designs help quiet the mind.</li>
<li>
<strong>Kids</strong>: Encourages fine motor skills, color recognition, self-expression, and quick wins to keep motivation high.</li>
</ul>
<p>If you can recognize these differences, you will be able to customize the details, line styles, themes, and layout descriptions for your AI coloring book prompts.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_05b.jpg" alt="Adult coloring book page VS Childrens coloring book page" loading="lazy" width="870px" height="449px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_05b.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_05b.jpg" alt="Adult coloring book page VS Childrens coloring book page" loading="lazy" width="650px" height="338px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_05b.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_05b.jpg" alt="Adult coloring book page VS Childrens coloring book page" loading="lazy" width="380px" height="202px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_05b.jpg 2x">
<figcaption><a href="https://elements.envato.com/vintage-peonies-floral-seamless-patterns-J5J3DMV" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Vintage Peonies</a> (Left / Envato) / <a href="https://elements.envato.com/summer-line-art-drawing-coloring-page-Y48PWGM" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Summer Drawing </a>(Right / Envato)</figcaption>
</figure>
<h2 id="toc-lcrv-how-to-define-your-coloring-book-concept">
<span class="sectionnum">3.</span> How to define your coloring book concept</h2>
<p>Begin by clearly defining the theme of your coloring book. This step helps guide all your creative decisions throughout the process.</p>
<p>For adult audiences, consider themes like:</p>
<ul>
<li>Mandalas &amp; geometric patterns</li>
<li>Botanical gardens &amp; floral arrangements</li>
<li>Intricate animal portraits (e.g. lions, owls, elephants)</li>
<li>Zentangles</li>
<li>Fantasy worlds (dragons, castles, enchanted forests)</li>
<li>Architectural details (Gothic cathedrals, vintage doorways</li>
<li>Steampunk &amp; mechanical designs</li>
<li>Ocean life &amp; underwater scenes</li>
<li>Celestial &amp; astrological themes</li>
<li>Cultural motifs (henna-inspired, Art Deco, Aztec patterns)</li>
<li>Wine, alcohol, coffee &amp; tea rituals</li>
</ul>
<p>For children, focus on:</p>
<ul>
<li>Everyday objects and toys</li>
<li>Food</li>
<li>Fantasy elements</li>
<li>Animals</li>
<li>Dinosaurs &amp; prehistoric creatures</li>
<li>Magical unicorns &amp; fairies</li>
<li>Superheroes &amp; sidekicks</li>
<li>Outer space adventures (astronauts, rockets, aliens)</li>
<li>Vehicles &amp; construction (cars, trains, diggers)</li>
<li>Under-the-sea (fish, mermaids, sea turtles)</li>
<li>Holiday celebrations (Halloween, Christmas, birthdays)</li>
<li>Jungle safari (lions, monkeys, elephants)</li>
<li>Cute monsters &amp; robots</li>
</ul>
<p>Select a theme and create a brief that includes your target audience, artistic style preference, and the overall mood you want to achieve. This will serve as your guiding principle throughout the creation process.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_06.jpg" alt="Difference between adult coloring book themes and kids coloring page themes" loading="lazy" width="870px" height="449px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_06.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_06.jpg" alt="Difference between adult coloring book themes and kids coloring page themes" loading="lazy" width="650px" height="338px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_06.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_06.jpg" alt="Difference between adult coloring book themes and kids coloring page themes" loading="lazy" width="380px" height="202px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_06.jpg 2x">
<figcaption><a href="https://elements.envato.com/mandala-seamless-pattern-PM2FXDJ" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Mandala Pattern</a> (Left / Envato) / <a href="https://elements.envato.com/graphic-designer-line-doodle-6ZU5YJV" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Graphic Designer Doodle</a> (Right / Envato)</figcaption>
</figure>
<h2 id="toc-rxvl-how-to-craft-the-perfect-ai-prompt-for-dynamic-coloring-pages">
<span class="sectionnum">4.</span> How to craft the perfect AI prompt for dynamic coloring pages</h2>
<p>When you want AI to generate pages for your printable coloring book, you need to make it feel both dynamic and color-ready. Your prompt needs to be specific, descriptive, and tailored to the AI coloring book generator. Here is what your prompt should include:</p>
<h4 id="toc-7kfi-audience-complexity">1. Audience &amp; complexity</h4>
<ul>
<li>
<strong>Adult</strong>: "<em>ultra-detailed"</em>, "<em>intricate"</em>, "<em>fine line art"</em>.</li>
<li>
<strong>Child</strong>: "<em>bold outlines</em>", "<em>simple shapes</em>", "<em>playful</em>".</li>
</ul>
<h4 id="toc-k9w8-style-line-weight">2. Style &amp; line weight</h4>
<ul>
<li>Specify "<em>black-and-white vector line art"</em>, "<em>0.3 pt uniform line width</em>", "<em>no shading"</em>, or "<em>grayscal</em><em>e"</em>.</li>
<li>Or "<em>hand-draw</em><em>n marker styl</em><em>e</em>", "<em>thick outlines</em>", "<em>thick </em><em>black outlines</em>", "<em>clean line art</em>".</li>
</ul>
<h4 id="toc-mp9s-composition-dynamics">3. Composition &amp; dynamics</h4>
<ul>
<li>
<strong>Adult</strong>: Use terms like "<em>dynamic composition"</em>, "<em>flowing movement"</em>, "<em>overlapping elem</em><em>ents"</em>, "<em>action lines"</em>, "<em>patterns"</em>, and "<em>textures</em>".</li>
<li>
<strong>For children</strong>: "<em>centered composition"</em>, "<em>isolate</em><em>d objects"</em>, "<em>simple shapes"</em>, "<em>clear white background"</em>, and "<em>recognizable f</em><em>orm</em><em>s"</em>.</li>
</ul>
<h4 id="toc-95lh-theme-motifs">4. Theme &amp; motifs</h4>
<ul>
<li>E.g. "<em>botanical mandala with swirling vines and hidden animals</em>".</li>
<li>Or "<em>cartoon farm </em><em>scene: cow, pig, tractor,</em><em> barn, sun with a smiling face</em>".</li>
</ul>
<h4 id="toc-bpsb-technical-requirements">5. Technical requirements</h4>
<ul>
<li>"<em>High</em><em>-</em><em>resolution"</em>, "<em>300 DPI</em>", "<em>3000×3000 px"</em>.</li>
<li>"<em>Portrait orientation</em>", "<em>single-page layout"</em>, "<em>sized </em><em>for 8.5″×11″ printing"</em>.</li>
</ul>
<h4 id="toc-pk1f-negativeexclude-tokens">6. Negative/exclude notes</h4>
<ul>
<li>"<em>No shading"</em>, "<em>no text</em>", "<em>no color</em>", "<em>no halftones"</em>, "<em>n</em><em>o background noise</em>".</li>
</ul>
<div class="callout-block">
<span class="callout-icon callout-tip"></span>
<div>
<div class="callout-head">tip</div>
<div class="callout-message">For items you want to exclude, sometimes it can work better if you simply avoid mentioning them. Experiment with the prompts to see what works for you.</div>
</div>
</div>
<p>By tailoring every part of your prompt—from the subject and mood to the point size of the lines and the output format—you will get AI-generated coloring pages that match your vision.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_07A.jpg" alt="how to craft a prompt in GraphicsGen ai generator for coloring pages" loading="lazy" width="870px" height="1075px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_07A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_07A.jpg" alt="how to craft a prompt in GraphicsGen ai generator for coloring pages" loading="lazy" width="650px" height="802px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_07A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_07A.jpg" alt="how to craft a prompt in GraphicsGen ai generator for coloring pages" loading="lazy" width="380px" height="467px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_07A.jpg 2x"></figure>
<h3 id="toc-uylu-what-is-the-formula-to-craft-a-rock-solid-prompt">What is the formula to craft a rock-solid prompt?</h3>
<p>A good prompt = <strong>Technical requirements</strong> + <strong>Art style</strong> + <strong>Subject matter </strong>+ <strong>Composition</strong> notes + <strong>Complexity</strong> level + <strong>Line quality</strong> specifications + <strong>Background / Exclude</strong> elements or lack thereof.</p>
<h4 id="toc-garz-example-of-adult-coloring-page-prompt">Example of an adult coloring page prompt</h4>
<p>(<strong>Technical requirements</strong>) "<em>Create a full-bleed A4 format coloring page at 300 DPI </em>+ (<strong>Art Style</strong>) <em>rendered as solid black line art</em> (<strong>Subject)</strong> <em>a whimsical woodland scene for adults: an ancient oak tree with twisting branches, clusters of mushrooms, hidden woodland creatures,</em> (<strong>Composition notes</strong>) <em>highly detailed bark texture, stipple shading only.</em> (<strong>Line quality</strong>) <em>Use a uniform line weight, crisp black outlines</em> (<strong>Background / Exclude</strong>) <em>on a transparent background, with no shading.</em>"</p>
<h4 id="toc-0k4f-example-of-kids-coloring-page-prompt">Example of a kids' coloring page prompt</h4>
<p>(<strong>Technical requirements</strong>) "<em>Create a full-bleed A4 format coloring page at 300 DPI </em>+ (<strong>Art Style</strong>) <em>Simple ink doodle</em> (<strong>Subject</strong>) <em>of a happy unicorn prancing in a meadow,</em> (<strong>Composition notes</strong>) <em>big shapes and bold outlines, minimal detail, smiling clouds overhead.</em> (<strong>Line quality</strong>) <em>0.5 pt black line width</em> (<strong>Background / Exclude</strong>) <em>on white background, no text, no background noise.</em>"</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/Prompt_A.jpg" alt="Perfect Coloring Page Prompt specs" loading="lazy" width="870px" height="377px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/Prompt_A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/Prompt_A.jpg" alt="Perfect Coloring Page Prompt specs" loading="lazy" width="650px" height="285px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/Prompt_A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/Prompt_A.jpg" alt="Perfect Coloring Page Prompt specs" loading="lazy" width="380px" height="171px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/Prompt_A.jpg 2x"></figure>
<h3 id="toc-g37v-what-are-some-pro-prompting-tips-to-follow">What are some pro prompting tips to follow?</h3>
<ul>
<li>
<strong>Avoid clichés</strong>: Skip "<em>stress relief mandala"</em>; try "<em>Art Nouveau insect with vine borders"</em>.</li>
<li>
<strong>Words to avoid</strong>: GraphicsGen will flag words like "<em>stroke"</em> when referring to line weight. Also, any words that fall in the category of profanity, hate-speech, sexual content, self-harm, terrorism, violence, and other sensitive wordings.</li>
<li>
<strong>Boost detail</strong>: Add "<em>cross-hatching"</em>, "<em>stippling</em>", or "<em>whimsical borders</em>" to prompts.</li>
<li>
<strong>Fix mistakes</strong>: If GraphicsGen adds color, use "<em>monochrome line art ONLY</em>" in your prompt.</li>
<li>
<strong>Adult pro tip</strong>: Avoid bland art by adding "<em>symmetrical</em>", "<em>ornate"</em>, or "<em>hidden elements."</em>
</li>
<li>
<strong>Kids pro tip</strong>: Use "<em>large shapes"</em>, "<em>bold lines</em>", "<em>cartoony"</em>, and "<em>playful"</em> to keep it child-friendly.</li>
<li>
<strong>Keep refining</strong>: AI art is a process, not a one-and-done task. Learn from each result and tweak your approach accordingly.</li>
<li>
<strong>Create a simple style guide</strong>: Record your best prompts, preferred levels of complexity, and design guidelines to maintain consistency.</li>
<li>Check out our <a class="css-118vsk3" href="https://elements.envato.com/learn/ai-art-prompts" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">complete guide to creative AI art prompts</a> to learn more about creating effective AI prompts. </li>
</ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_10.jpg" alt="flagged bad word prompts on GraphicGen" loading="lazy" width="870px" height="437px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_10.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_10.jpg" alt="flagged bad word prompts on GraphicGen" loading="lazy" width="650px" height="329px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_10.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_10.jpg" alt="flagged bad word prompts on GraphicGen" loading="lazy" width="380px" height="197px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_10.jpg 2x"></figure>
<h2 id="toc-y6qy-how-to-generate-your-first-set-of-adult-coloring-pages">
<span class="sectionnum">5.</span> How to generate your first set of adult coloring pages</h2>
<h3 id="toc-67ej-prompt-1">Adult coloring book prompt 1</h3>
<p>Let's start with coloring book pages for adults. For the sake of this tutorial, we will create different coloring page themes to test out several prompts.</p>
<p>For the first coloring page, select the <strong>Adult Coloring Book</strong> art style from the GraphicsGen gallery for detailed and intricate designs. GraphicsGen is a great AI line art generator. I chose a 90s nostalgia theme for this concept, featuring items like a Rubik's Cube and a flip phone, set against a floral background. When writing prompts, pay attention to line weight consistency, the distribution of details, and the overall balance of composition. Here's an example of an adult coloring page prompt:</p>
<ul>
<li>"<em>Create a full-bleed square format coloring page, rendered at 300 DPI as black-and-white solid black line art. In an asymmetrical collage layout, meticulously create highly detailed '90s icons—a detailed rotary dial telephone, a swirling, bubbly lava lamp, a music cassette tape, a scrambled Rubik's Cube, and a classic flip phone—interwoven, floating and overlapping an intricate floral arrangement of daisies, sunflowers, and dahlias as a setting. Incorporate negative-space patterns around and between each element to maximize stress-relief coloring. Use a uniform line weight and crisp black outlines on a pure white background, with no shading, no grayscale, no stray dots, or messy linework.</em>"</li>
</ul>
<p>Carefully enter your prompt and click <strong>Generate</strong>. AI sometimes produces designs with inconsistent line weights or overly complex areas—note these to refine the prompt later. If you find errors, click <strong>Generate Another</strong> below the rendered image. Correct your prompt and try to generate at least 3-4 different compositions again. Generating multiple works increases the likelihood of finding designs that perfectly match your vision. Once GraphicsGen generates a suitable image, click on the bottom right of the rendered image to download the PNG.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_08A.jpg" alt="90s nostalgie adult coloring page theme ai generated thru GraphicGen" loading="lazy" width="870px" height="657px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_08A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_08A.jpg" alt="90s nostalgie adult coloring page theme ai generated thru GraphicGen" loading="lazy" width="650px" height="492px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_08A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_08A.jpg" alt="90s nostalgie adult coloring page theme ai generated thru GraphicGen" loading="lazy" width="380px" height="290px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_08A.jpg 2x"></figure>
<h3 id="toc-67ej-prompt-1">Adult coloring book prompt 2</h3>
<p>Keeping the <strong>Adult Coloring Book</strong> art style selected, an elegant cocktail theme was chosen for the second coloring page. Imagine a martini with a curled lemon twist and olive, a mojito fresh with basil sprigs, and a negroni garnished with a vibrant orange slice—all floating in a playful, asymmetrical layout against a celestial backdrop.</p>
<p>Then I described the intricate cosmic scene, weaving in stars, moons, planets, and swirling filigree to give the page a magical feel. All the outlines must be clean, bold, and black, with no speckles or shading, to maintain a crisp and coloring-friendly appearance. Finally, I ran the prompt. Sometimes the results aren't perfect, and the prompt must be fine-tuned. Here's the AI coloring book prompt I worked with:</p>
<ul>
<li>"<em>Create a full-bleed square format coloring page, rendered at 300 DPI as black-and-white solid black line art. Create a high-detail adult coloring-book line art page with three floating cocktail glasses arranged in an asymmetrical composition, floating in different angles: A classic martini glass garnished with a long curled lemon twist and a single olive on a pick. A tall mojito glass filled with crisp ice cubes and fresh basil sprigs. A sturdy negroni tumbler featuring a thick orange slice on its rim All suspended over an intricate celestial background of detailed swirling cosmic filigree, planets, crescent moons, stars, and tiny orbs. Use clean, bold black outlines with no shading, or speckles—perfectly crisp for detailed coloring.</em>"</li>
</ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_09a.jpg" alt="prompt 2 floating cocktail glasses on celestial background ai generated coloring page" loading="lazy" width="870px" height="1133px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_09a.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_09a.jpg" alt="prompt 2 floating cocktail glasses on celestial background ai generated coloring page" loading="lazy" width="650px" height="845px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_09a.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_09a.jpg" alt="prompt 2 floating cocktail glasses on celestial background ai generated coloring page" loading="lazy" width="380px" height="491px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_09a.jpg 2x"></figure>
<h3 id="toc-67ej-prompt-1">Adult coloring book prompt 3</h3>
<p>For the third coloring page, I chose a koi and blossom design. I started by locking in the technical specs—"f<em>ull-bleed square adult coloring book page, 300 DPI, 3 mm bleed</em>"—so the output is print-ready. Next, described my main subjects and their arrangement—“<em>two elegant koi fish swimming in a perfect yin-yang formation, bodies curving into a balanced flow with long tails spinning around</em>."</p>
<p>Then I nailed down the art style—"<em>intricate hand-drawn pen-and-ink line art, bold crisp black outlines on white, varied line weights for depth, no shading or grayscale</em>." After that, I layered in the decorative touches—"<em>intertwine lush cherry blossoms (no branches) and fill every inch with dynamic water motifs: ripples, swirls, waves, and bubbles</em>." Finally, I specify the line work only, excluding any text, to keep the page clean and ready for coloring. So the prompt reads as:</p>
<ul>
<li>"<em>Full-bleed square adult coloring book page, 300 DPI, with 3 mm bleed on all sides. Render two elegant koi fish swimming in a perfect yin-yang formation at the center, their bodies curving into a balanced flow and long tails spinning around. Use intricate hand-drawn pen-and-ink line art style: bold, crisp black outlines on a white background, with varied line weights to suggest depth, movement, and scale; no shading or grayscale. Intertwine lush cherry blossoms in different angles, no branches, with individual blossoms floating in the water—adding finely detailed petals around and between the fish. Fill every inch of negative space with dynamic water motifs: ripples, swirling currents, waves, and rising bubbles that organically interact with the fish and floral elements. The composition should flow in a continuous loop around the circle. Exclude any text</em>."</li>
</ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_12.jpg" alt="koi and cherry blossom adult coloring page ai generated" loading="lazy" width="870px" height="819px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_12.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_12.jpg" alt="koi and cherry blossom adult coloring page ai generated" loading="lazy" width="650px" height="612px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_12.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_12.jpg" alt="koi and cherry blossom adult coloring page ai generated" loading="lazy" width="380px" height="358px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_12.jpg 2x"></figure>
<h3 id="toc-67ej-prompt-1">Adult coloring book prompt 4</h3>
<p>Another 'coloring book page for adults' concept to try is a skull-and-snake motif. I began by locking in the technical specs: "<em>a square format at 300 DPI with a 3 mm bleed—to guarantee a print-ready layout</em>." Then I defined the focal imagery: "<em>a human skull entwined by two coiling serpents and blooming rose vines</em>."</p>
<p>Followed by the line specs: "a hand-drawn pen-and-ink vector style with thick, clean black outlines and no shading or grayscale, so it reads as pure line art for coloring." To keep the page engaging, I requested intricate scale patterns, skull cracks, detailed petals, and hidden death-themed motifs, such as skull-patterned moths and fallen rose petals. Finally, I filled all negative space with swirling, spiky vines plus rose borders, excluded any text or logos, and clarified that the final deliverable should be optimized for pure line work to achieve high-quality print. The prompt reads:</p>
<ul>
<li>"<em>Create a square format adult-coloring-book page with 3 mm bleed on all sides, no border, 300 DPI. Feature a central human skull entwined by a large detailed coiling serpent and blooming rose vines. Render entirely in hand-drawn pen-and-ink line art in a bold vector style: thick, clean, black outlines on a white background —no shading or grayscale. Embellish the serpents’ scales, the skull’s cracks, and each rose petal with intricate details. Hide tiny death-themed motifs — moths, dropped rose petals—within the composition’s negative spaces. Fill all empty areas with swirling spikey vines and rose border elements to create a seamless, balanced layout. Exclude any text, brand names, or logos. Output as pure line work optimized for high-quality print</em>."</li>
</ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_13C.jpg" alt="adult coloring page of serpents and skull motif, ai generated thru envato GraphicsGen" loading="lazy" width="870px" height="809px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_13C.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_13C.jpg" alt="adult coloring page of serpents and skull motif, ai generated thru envato GraphicsGen" loading="lazy" width="650px" height="605px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_13C.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_13C.jpg" alt="adult coloring page of serpents and skull motif, ai generated thru envato GraphicsGen" loading="lazy" width="380px" height="354px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_13C.jpg 2x"></figure>
<h3 id="toc-67ej-prompt-1">Adult coloring book prompt 5</h3>
<p>For the last concept, I went for a psychedelic vibe. I started as usual, locking in the essentials—a square, single-page layout at 300 DPI with bold, uniform strokes and no shading—to guarantee a crisp, print-ready result. From there, I defined the overarching vibe as an "immersive psychedelic tapestry".</p>
<p>I broke it into five layered motif groups (ribbons &amp; spirals, mandala details, organic surreal elements, micro-patterns, and Op-Art panels), each described with vivid verbs (twist, evolve, weave). By spelling out how ribbons morph into fractal spirals, mandalas into interlocking petals, and vines into alien blossoms, the prompt ensures that every negative space is filled with dots, dashes, or checkerboard waves. Finally, I reiterated the need for clean, continuous lines edge-to-edge so that the design remains both seamless and sharply defined. A prompt example:</p>
<ul>
<li>"C<em>reate a single-page, square-format adult coloring book illustration at 300 DPI in crisp black line art with uniform thick strokes and no shading. Fill the entire page edge-to-edge with an immersive psychedelic tapestry: -Flowing Ribbons &amp; Spirals: Draw fluid, ribbon-like shapes that twist and merge in an endless dance, evolving into fractal spirals and kaleidoscopic mandalas. -Mandala Details: Each spiral unfolds into concentric rings and petals, their geometry intricate and interlocking, inviting close coloring. - Organic Motifs: Weave in strange fungi, twisting vines, and alien blossoms—some bearing hidden faces or symbols—to add a surreal, living quality. - Micro-Patterns: Fill negative spaces with delicate dots, dashes, concentric circles, and tiny stars to encourage detailed work. - Op-Art Elements: Integrate checkerboard waves, moiré ripples, and optical-illusion panels that pulse with movement. Ensure all lines are clean, continuous, and bold enough for precise coloring</em>."</li>
</ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_14A.jpg" alt="psychedellic tapestry adult coloring page ai generation" loading="lazy" width="870px" height="819px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_14A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_14A.jpg" alt="psychedellic tapestry adult coloring page ai generation" loading="lazy" width="650px" height="612px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_14A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_14A.jpg" alt="psychedellic tapestry adult coloring page ai generation" loading="lazy" width="380px" height="358px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_14A.jpg 2x"></figure>
<h2 id="toc-sf3i-how-to-create-the-childrens-versions-using-the-simple-ink-doodle-style">
<span class="sectionnum">6.</span> How to create the children's versions using the Simple Ink Doodle Style</h2>
<p>Switch to the <strong>Simple Ink Doodle </strong>art style for kids' coloring pages. It's also an excellent option for AI line art generation. Since we will focus on simplicity and bold shapes for this age group, the <em>Simple Ink Doodle</em> style is ideal for creating clean, streamlined designs that are perfect for children. When creating prompts for children's coloring pages, concentrate on the following elements:</p>
<ul>
<li>Large, clearly defined spaces for coloring</li>
<li>Minimal details</li>
<li>Clear subjects</li>
<li>Positive, friendly images</li>
</ul>
<h3 id="toc-gblj-prompt-1">Kids' coloring book prompt 1</h3>
<p>Begin by locking in the page specs—a single-page, square format at 300 DPI—to guarantee a crisp, print-ready canvas. Then define the star of the scene (a dynamic, galloping unicorn with a long, flowing mane and tail) and surround it with playful motifs (swirling ribbons, blooming flowers, fluttering butterflies, twinkling stars, bubbling hearts, and bows) to fill every corner with energy.</p>
<p>Next, specify a hand-drawn pen-and-ink vector style—thick, clean black outlines with varied line weights and no shading—to keep the artwork pure line work for easy coloring. Finally, I excluded any text or branding to ensure the illustration stands independently. The prompt reads: </p>
<ul>
<li>"<em>Create a single-page, square-format kids’ coloring-book illustration at 300 DPI. Center a dynamic galloping cartoon unicorn with a long flowing mane and tail. Surround it with long swirling ribbons, blooming flowers, fluttering butterflies, twinkling stars, bubbling hearts, and bows to fill the scene with playful energy. Render entirely in hand-drawn pen-and-ink line art in a crisp vector style: thick, clean black outlines on a white background with varied line weights to convey motion and depth—no shading or grayscale. Exclude any text, brand names, or logos. Optimize as pure line work for easy coloring</em>."</li>
</ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_15.jpg" alt="childrens coloring book ai generated featuring unicorn" loading="lazy" width="870px" height="819px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_15.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_15.jpg" alt="childrens coloring book ai generated featuring unicorn" loading="lazy" width="650px" height="612px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_15.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_15.jpg" alt="childrens coloring book ai generated featuring unicorn" loading="lazy" width="380px" height="358px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_15.jpg 2x"></figure>
<h3 id="toc-gblj-prompt-1">Kids' coloring book prompt 2</h3>
<p>For the second coloring page, let's do an astronaut theme. First, set down the print requirements—a single-page, square layout at 300 DPI—for color-ready art. Next, define the main character of the scene: a young astronaut 'surfing' on a rocket board through a vibrant galaxy.</p>
<p>To spark imagination, the background should be filled with oversized, easy-to-color planets, smiling faces, playful comets, and friendly aliens waving from asteroids. To keep it kid-friendly, every element should be rendered in bold, hand-drawn line art, with thick, crisp outlines of varied weights and no shading. Fun, chunky details such as planet faces, gear buttons, and comet flares will add charm, along with broad, open spaces for coloring. Finally, make sure to exclude any text or branding from the design. The prompt should read something like this:</p>
<ul>
<li>"<em>Create a single-page, square-format kids’ coloring-book illustration at 300 DPI. Feature a dynamic scene of a young astronaut surfing on a rocketboard through a vibrant galaxy: the astronaut boy in a simple, cartoon-style spacesuit, arms outstretched, streaming in zero gravity. Surround them with large, easily colorable planets, smiling stars, playful comets with trailing tails, and two or three friendly alien characters waving from nearby asteroids. Render all elements as bold, hand-drawn line art: thick, crisp black outlines on a white background, with varied line weights for emphasis but no shading or grayscale. Include fun, chunky details—planet faces, gear buttons, and comet flares—while leaving broad open areas for coloring. Exclude any text, brand names, or logos</em>."</li>
</ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_16A.jpg" alt="kids coloring page astronaut theme ai generated thru GraphicGen" loading="lazy" width="870px" height="819px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_16A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_16A.jpg" alt="kids coloring page astronaut theme ai generated thru GraphicGen" loading="lazy" width="650px" height="612px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_16A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_16A.jpg" alt="kids coloring page astronaut theme ai generated thru GraphicGen" loading="lazy" width="380px" height="358px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_16A.jpg 2x"></figure>
<h3 id="toc-gblj-prompt-1">Kids' coloring book prompt 3</h3>
<p>For this sample, let's work on animal characters. We'll specify a square format at 300 DPI and then <span>build out the scene: two cute animal characters (a cat baker in a chef's hat and apron behind a pastry-filled window,</span> and a dog server in a bow tie holding a steaming cup) set before a simple café façade.</p>
<p>Display pastries, a blank chalkboard menu, and some potted flowers. Ensure you include thick, clean outlines on a transparent background with no shading or grayscale, allowing for pure line art that facilitates easy coloring. For the background, add simple trees and bushes, and exclude any text.</p>
<ul>
<li>"<em>Create a square-format, 300 DPI, hand-drawn line-art illustration for a children’s coloring book featuring two cute animal characters in front of a cozy café storefront: - Characters: - A friendly cat baker wearing a chef’s hat and apron, standing behind store window panel with cupcakes, loaves of bread, and pastries. - A cheerful cartoon dog waiter in a bow tie and server apron, holding a tray with a steaming cup and saucer. - Setting: - A quaint café façade with a striped awning, large display window showing baked goods, a small chalkboard menu (blank for coloring), and potted flowers on either side of the door. Coffee Table upfront . - Style: - Thick, clean black outlines on a transparent background. - No shading or grayscale—pure line art for easy coloring. - Extras: - Leave the café sign and chalkboard blank. Tree and bush background within the page borders. - Exclude any text, logos, or branding.</em>"</li>
</ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_17.jpg" alt="cute animal scene in bakeru ai generated thru GraphicGen" loading="lazy" width="870px" height="819px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_17.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_17.jpg" alt="cute animal scene in bakeru ai generated thru GraphicGen" loading="lazy" width="650px" height="612px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_17.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_17.jpg" alt="cute animal scene in bakeru ai generated thru GraphicGen" loading="lazy" width="380px" height="358px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_17.jpg 2x"></figure>
<h3 id="toc-gblj-prompt-1">Kids' coloring book prompt 4</h3>
<p>For sample four, a Japanese culture theme was chosen. I began crafting this prompt by setting the essentials—a single-page layout at 300 DPI. Next, I centered the scene around a kawaii kitten in a simple floral kimono behind a sushi counter.</p>
<p>I added clear, chunky kitchen props (rice bowls, bamboo steamer, soy dish, sushi board, and fish accents) and a charming Japanese wall pattern in the background to create context. I specified uniform 1 pt black line art with smooth, rounded strokes and no shading to keep everything bold and kid-friendly, and left generous white space. Finally, I framed it all with a thick inner border set 3 mm from the edge to tie the composition together. This is the AI coloring book prompt:</p>
<ul>
<li>"<em>Design a single-page, square-format coloring book illustration at 300 DPI. Center a kawaii cartoon kitten in a simple floral kimono with tied obi, standing behind a sushi counter. One paw holds a bamboo rolling mat while the other shapes rice into nigiri. Surround the foreground scene with chunky, easy-to-color kitchen props—bowls of rice, a bamboo steamer, a soy-sauce dish, a wooden sushi board, and plate of fish. In the background, a kawaii cherry blossom Japanese-style wall design. Render all elements in uniform 1 pt black line art with clean, rounded strokes and no shading. Leave ample white space and simple pattern. Finish with a thick line border set 3 mm inside the page edge</em>."</li>
</ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_18A.jpg" alt="Japanese Kawaii Cat making sushi ai generated through GraphicGen" loading="lazy" width="870px" height="819px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_18A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_18A.jpg" alt="Japanese Kawaii Cat making sushi ai generated through GraphicGen" loading="lazy" width="650px" height="612px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_18A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_18A.jpg" alt="Japanese Kawaii Cat making sushi ai generated through GraphicGen" loading="lazy" width="380px" height="358px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_18A.jpg 2x"></figure>
<h3 id="toc-gblj-prompt-1">Kids' coloring book prompt 5</h3>
<p>Here is a fun approach with skeletons. I sketched out the playful concept: three bubbly skeleton characters enjoying a sunny beach day, each engaged in a fun activity (digging with a shovel, tossing a beach ball, splashing in gentle waves) to set a lighthearted, dynamic mood.</p>
<p>Next, I added simple seaside accents—scattered shells, a sand bucket, starfish on the shore, a palm tree bending in the breeze, and a smiling sun overhead—to frame the scene. Finally, I finalized the style guidelines: bold, uniform 1-point black outlines with no shading and clear, open shapes, ensuring the line art remains clean, accessible, and perfectly suited for children.</p>
<ul>
<li>"<em>Create a single-page, square-format adult coloring book illustration at 300 DPI. A cheerful kids' coloring-book page in clean black-and-white line art features three bubbly cartoon skeletons enjoying a sunny beach day. One skeleton enthusiastically digs in the sand with a small shovel; another is joyfully playing with a beach ball and splashes in gentle waves: and the third building a sandcastle. Surround them with simple, whimsical seaside details—scattered shells, a sand bucket, starfish on the sand. Add a palm tree bending in the breeze, and a smiling sun overhead. Use bold, uniform 1 pt strokes with no shading, keeping shapes clear and open. Lay out all elements on a single page with plenty of white space for coloring.</em>"</li>
</ul>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_19A.jpg" alt="skeletons playing on beach ai generated on Envato's GraphicGen" loading="lazy" width="870px" height="819px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_19A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_19A.jpg" alt="skeletons playing on beach ai generated on Envato's GraphicGen" loading="lazy" width="650px" height="612px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_19A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_19A.jpg" alt="skeletons playing on beach ai generated on Envato's GraphicGen" loading="lazy" width="380px" height="358px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_19A.jpg 2x"></figure>
<h2 id="toc-nm4j-excellent-job-youre-done">Excellent job, you're done!</h2>
<p>Congratulations, you now know how to create effective AI prompts for coloring pages for adults and kids, using GraphicsGen as both an AI coloring book generator and an AI line art generator. With this skillset, you’ll be whipping up unique, eye-catching coloring books in a heartbeat.</p>
<p>Just keep your prompts clear and creative, curate your designs carefully, and tune into what your audience wants. Those simple steps are the secret sauce for AI coloring book success. And if you’d like to create your own printable coloring book illustrations, look at <a class="css-118vsk3" href="https://design.tutsplus.com/tutorials/how-to-create-a-coloring-book-style-illustration-in-adobe-illustrator--cms-26998">How to Create a Coloring Book Style Illustration in Adobe Illustrator</a>.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_20.jpg" alt="Nostalgia theme coloring page for adults generated thru AI generator GraphicGen" loading="lazy" width="870px" height="819px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_20.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_20.jpg" alt="Nostalgia theme coloring page for adults generated thru AI generator GraphicGen" loading="lazy" width="650px" height="612px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_20.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_20.jpg" alt="Nostalgia theme coloring page for adults generated thru AI generator GraphicGen" loading="lazy" width="380px" height="358px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_20.jpg 2x"></figure>
<h2 id="toc-80kr-popular-illustrator-patterns-from-envato-elements">Resources from Envato</h2>
<p>Now that you've learned how to create a coloring book using AI, your <a href="https://elements.envato.com" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Envato</a> subscription provides access to a vast library of high-quality, easily customizable templates, graphics, and more. You can use these resources to generate your printable coloring book. Here are a few graphics you can explore:</p>
<h3 id="toc-uyuy-coloring-pages-digital-sketches-png">
<a href="https://elements.envato.com/coloring-pages-digital-sketches-illustration-LYUWEDP" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Coloring pages digital sketches</a> (PNG)</h3>
<p>If you're short on time to create AI coloring prompts, visit Envato to download one of their many coloring page collections, such as this one. It includes everything from cozy interiors to blooming flowers.</p>
<figure class="post_image"><a href="https://elements.envato.com/coloring-pages-digital-sketches-illustration-LYUWEDP" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_A.jpg" alt="coloring page digital sketches png from envato" loading="lazy" width="870px" height="586px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_A.jpg" alt="coloring page digital sketches png from envato" loading="lazy" width="650px" height="440px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_A.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_A.jpg" alt="coloring page digital sketches png from envato" loading="lazy" width="380px" height="260px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_A.jpg 2x"></a></figure>
<h3 id="toc-2q8i-want-to-learn-more">
<a href="https://elements.envato.com/mandala-set-1-RGD3C8F" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Mandala set </a>(PNG, EPS, JPG, AI)</h3>
<p>Mandalas are an excellent option for adult coloring books. Their calming, repetitive patterns help in relaxation and creating mindfulness, making each coloring session a soothing retreat. You can also create your own by following this tutorial: <a class="css-118vsk3" href="https://design.tutsplus.com/tutorials/how-to-create-a-festive-mandala-style-coloring-book-page-in-adobe-illustrator--cms-27699" target="_blank" rel="noopener">How to Create a Festive Mandala Style Coloring Book Page in Illustrator</a>.</p>
<figure class="post_image"><a href="https://elements.envato.com/mandala-set-1-RGD3C8F" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_B.jpg" alt="mandala set from envato" loading="lazy" width="870px" height="586px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_B.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_B.jpg" alt="mandala set from envato" loading="lazy" width="650px" height="440px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_B.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_B.jpg" alt="mandala set from envato" loading="lazy" width="380px" height="260px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_B.jpg 2x"></a></figure>
<h3 id="toc-2q8i-want-to-learn-more">
<a href="https://elements.envato.com/halloween-doodle-coloring-pages-HSXCDB4" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Halloween doodle set </a>(PNG, EPS, AI)</h3>
<p>This Halloween doodle coloring pages collection features charming, hand-drawn cartoon characters as fully editable clip art—perfect for Adobe Illustrator or CorelDRAW. With a few clicks, you can easily adjust and recolor each graphic to suit your spooky-season coloring book designs.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_C.jpg" alt="set of halloween season coloring book page designs from Envato" loading="lazy" width="870px" height="586px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_C.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_C.jpg" alt="set of halloween season coloring book page designs from Envato" loading="lazy" width="650px" height="440px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_C.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_C.jpg" alt="set of halloween season coloring book page designs from Envato" loading="lazy" width="380px" height="260px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_C.jpg 2x"></figure>
<h3 id="toc-2q8i-want-to-learn-more">
<a href="https://elements.envato.com/hand-drawn-floral-illustration-line-art-design-HU9BG98" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Hand-drawn floral line art</a>(AI, EPS, PNG, JPG)</h3>
<p>If you prefer not to use the AI coloring book generator, download this line art collection for a quick turnaround. The set is suitable for coloring book pages for adults.</p>
<figure class="post_image"><a href="https://elements.envato.com/hand-drawn-floral-illustration-line-art-design-HU9BG98" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_D.jpg" alt="Hand Drawn Floral Illustration Line Art Design from envato" loading="lazy" width="870px" height="586px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_D.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_D.jpg" alt="Hand Drawn Floral Illustration Line Art Design from envato" loading="lazy" width="650px" height="440px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_D.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_D.jpg" alt="Hand Drawn Floral Illustration Line Art Design from envato" loading="lazy" width="380px" height="260px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_D.jpg 2x"></a></figure>
<h3 id="toc-2q8i-want-to-learn-more">
<a href="https://elements.envato.com/hand-drawn-floral-line-art-illustration-design-3DC6799" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Hand-drawn floral illustration</a> (AI, EPS, PNG, PSD)</h3>
<p>This botanical collection of floral line illustrations is an interesting option for crafting stunning adult coloring books. Thanks to its fully editable AI/EPS files, you can easily edit elements to bring your unique design vision to life.</p>
<figure class="post_image"><a href="https://elements.envato.com/hand-drawn-floral-line-art-illustration-design-3DC6799" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_E.jpg" alt="Hand Drawn Floral Line Art Illustration Design from Envato" loading="lazy" width="870px" height="586px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_E.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_E.jpg" alt="Hand Drawn Floral Line Art Illustration Design from Envato" loading="lazy" width="650px" height="440px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_E.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_E.jpg" alt="Hand Drawn Floral Line Art Illustration Design from Envato" loading="lazy" width="380px" height="260px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/109201/image-upload/tut_how_to_Create_a_Coloring_Book_With_AI_E.jpg 2x"></a></figure>
<h2 id="toc-wb2h-want-to-learn-more">Want to learn more?</h2>
<p>Are you looking to unlock even more creative magic with AI? Check out our other articles for handy tips and clever tricks to get you started with AI coloring book generators and AI line art generators. You’ll be amazed at what you can create for your printable coloring book.</p>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/what-is-envato-ai-imagegen--cms-108551"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/posts/108551/preview_image/ImageGen_thumb_108551.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What is Envato AI ImageGen?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2659/profiles/21180/profileImage/profile_selfie_400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Maria Villanueva</div>
<div class="roundup-block__published-date">01 Aug 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-edit-images-with-ai--cms-109178"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/48/posts/109178/preview_image/image_edit_pre.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/48/posts/109178/preview_image/image_edit_pre.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/48/posts/109178/preview_image/image_edit_pre.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/48/posts/109178/preview_image/image_edit_pre.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/48/posts/109178/preview_image/image_edit_pre.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/48/posts/109178/preview_image/image_edit_pre.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">How to edit images with AI ImageEdit</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2827/profiles/21353/profileImage/Headshot.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2827/profiles/21353/profileImage/Headshot.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2827/profiles/21353/profileImage/Headshot.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2827/profiles/21353/profileImage/Headshot.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2827/profiles/21353/profileImage/Headshot.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2827/profiles/21353/profileImage/Headshot.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Alina Midori Hernández</div>
<div class="roundup-block__published-date">14 May 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/best-ai-image-generators--cms-108458"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/33/posts/108458/preview_image/best_ai_image_generators_in_2025.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/33/posts/108458/preview_image/best_ai_image_generators_in_2025.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/33/posts/108458/preview_image/best_ai_image_generators_in_2025.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/33/posts/108458/preview_image/best_ai_image_generators_in_2025.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/33/posts/108458/preview_image/best_ai_image_generators_in_2025.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/33/posts/108458/preview_image/best_ai_image_generators_in_2025.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">The best AI image generators of 2025</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/114/profiles/18595/profileImage/Headshot-small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/114/profiles/18595/profileImage/Headshot-small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/114/profiles/18595/profileImage/Headshot-small.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/114/profiles/18595/profileImage/Headshot-small.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/114/profiles/18595/profileImage/Headshot-small.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/114/profiles/18595/profileImage/Headshot-small.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Grace Fussell</div>
<div class="roundup-block__published-date">01 Aug 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/tutorials/how-to-create-a-movie-poster-using-ai-with-imagegen-and-imageedit--cms-109151"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/33/posts/109151/preview_image/envatoimageeditpreview.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">How to create a movie poster using AI with Envato ImageGen and ImageEdit</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2796/profiles/21283/profileImage/Ash_HS_1.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Ashlee Harrell</div>
<div class="roundup-block__published-date">14 Mar 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/midjourney-vs-stable-diffusion-ai-image-generators--cms-108355"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108355/preview_image/Tut_3319_Midjourney_VS_StableDiffusion_by_MissChatz_PREV.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Midjourney vs. Stable Diffusion: AI Image Generators</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">MissChatz</div>
<div class="roundup-block__published-date">01 Aug 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://design.tutsplus.com/articles/is-this-image-ai-generated--cms-108441"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/posts/108441/preview_image/Tut__How_to_Tell_if_image_is_AI_Generated_by_MissChatz_PREV_1.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Is This Image AI-Generated? Here's How You Can Tell</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/109/profiles/2378/profileImage/MissChatz_Logo_Big_Stamp_400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">MissChatz</div>
<div class="roundup-block__published-date">11 Mar 2024</div>
</div>
</div>
</div>
</div></a></li>
</ul>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/109201/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109201/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109201/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109201/a2t.img" width="1" /></div></content>
<published>2025-07-15 13:55:00 UTC</published>
<updated>2025-07-15 13:55:00 UTC</updated>
<author>
<name>MissChatz</name>
</author>
</entry>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/cms-109135</id>
<published>2025-02-14T11:53:09+00:00</published>
<link rel="alternate" type="text/html" href="https://photography.tutsplus.com/tutorials/how-to-prioritise-mood-over-action-in-video--cms-109135"/>
<title>And… action? How to prioritise mood over action in video</title>
<content type="html"><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ijbi">
<h2 id="toc-o19h-step-1-whats-the-frequency-kenneth-define-your-mood">
<span class="sectionnum">1.</span> What’s the frequency Kenneth? Define your mood</h2>
<p>Before you get cracking on the cinematography, writing dialogue, or thinking about what character arcs you might have, you need to decide what mood you want to get across. It’s the core to any emotionally driven story and that, plus the tone, will influence your overall style and delivery.</p>
<h3 id="toc-y0m5-1-the-emotional-core">The emotional core</h3>
<figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=TIkW4StMAPE&amp;t=0">
<iframe src="https://www.youtube.com/embed/TIkW4StMAPE?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure>
<p>Ask yourself:</p>
<ul>
<li>
<p>What is the main emotion you’d like your audience to experience?</p>
</li>
<li>
<p>How will the mood change through the narrative?</p>
</li>
<li>
<p>How do you want the audience to feel at key moments in the story?</p>
</li>
<li>
<p>How do your various characters respond to the emotions in the narrative?</p>
</li>
<li>
<p>What sounds and visuals could reinforce the emotions you’re aiming for?</p>
</li>
<li>
<p>How does the setting of your story contribute to the mood?</p>
</li>
</ul>
<p>Two “moody” films with totally different feels to them are <em>Lost in Translation</em> (2003) that has a sort of gentle yearning through the film, and <em>The Witch</em> (2015) that keeps us feeling dread and fear throughout.</p>
<h3 id="toc-y7wt-2-choosing-influences">Choosing influences</h3>
<p>Check out some films that have mood as their primary storytelling tool. We’ve got some suggestions for you at the end of the article, but you could try looking at specific directors too, like <a href="https://en.wikipedia.org/wiki/Andrei_Tarkovsky" target="_blank" rel="noopener">Andrei Tarkovsky</a>, Jane Campion, and <a href="https://elements.envato.com/learn/lessons-from-david-lynch-%F0%9F%A9%B6" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><span>David Lynch</span></a> who are really great at using cinematic techniques to get their desired mood across.</p>
<h3 id="toc-9lrq-3-consistency-in-the-tone">Consistency in the tone</h3>
<p>Once you’ve chosen your mood(s) then you need to make sure the tone fits with it. This could be something <span><a href="https://photography.tutsplus.com/articles/what-are-experimental-films--cms-108871">surreal</a>,</span> like <em>Eternal Sunshine of the Spotless Mind</em> (2004) or maybe more of a slow burn like <em>The Green Knight</em> (2021). Whatever it is, make sure you set out your stall early on and keep it consistent throughout.</p>
<h2 id="toc-0fjh-step-2-cinematography-and-composition">
<span class="sectionnum">2.</span> Cinematography and composition</h2>
<figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=FxLHP2IpBXw&amp;t=0">
<iframe src="https://www.youtube.com/embed/FxLHP2IpBXw?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure>
<h3 id="toc-seww-1-camera-movements-and-framing">Camera movements and framing</h3>
<p><a href="https://photography.tutsplus.com/articles/the-language-of-camera-movement-exploring-dolly-shots-zooms-pans--cms-108704"><span>Camera movements</span></a> and placement can really help with the pacing and emotional weight. Slow, lingering shots make us think, while handheld, jittery camerawork might make us feel tense or uneasy. Some quick examples are:</p>
<ul>
<li>
<p><em>The Turin Horse</em> (2011) uses long takes and very minimal camera movement which keeps us immersed in a world of stillness and despair.</p>
</li>
<li>
<p><em>The Blair Witch Project</em> (1999) was the poster child for shaky, handheld footage to make us feel frightened and like we’re right there in the story.</p>
</li>
<li>
<p><em>A Ghost Story</em> (2017) has a lot of static shots and uses symmetrical compositions to feel timeless.</p>
</li>
</ul>
<ul>
<li><a href="https://photography.tutsplus.com/articles/camera-movements-and-shots-to-master--cms-108611"><span>20 Types of Camera Movements and Shots to Master</span></a></li>
<li><a href="https://www.npr.org/2017/07/07/535968071/grief-hangs-around-at-home-in-a-ghost-story#:~:text=Though%20barely%2087%20minutes%2C%20it,story%20untethered%20from%20time%20itself."><span>Grief Hangs Around At Home In 'A Ghost Story'</span></a></li>
</ul>
<h3 id="toc-vdze-2-lighting-and-colour">Lighting and colour</h3>
<p>We all know that light and <a href="https://photography.tutsplus.com/articles/color-grading-in-premiere-pro--cms-106839"><span>colour</span></a> influence mood; a dimly lit hallway will make us feel something entirely different to a field bathed in golden sunlight. Here’s a refresher on the basics:</p>
<ul>
<li>
<p>Low key lighting creates tension, unease, and sometimes mystery.</p>
</li>
<li>
<p>Pastel colours and warm tones are great for nostalgia, romance, or melancholy.</p>
</li>
<li>
<p>Desaturating your colours gives the audience a feeling of distance and bleakness.</p>
</li>
</ul>
<ul>
<li><a href="https://photography.tutsplus.com/articles/history-of-colour-in-film--cms-108884"><span>A brief history of colour in film</span></a></li>
</ul>
<h3 id="toc-093w-3-blocking-and-space">Blocking and space</h3>
<p>Positioning the characters are within the frame can help to reinforce whatever emotional undercurrents you’ve got going on. In <em>Her</em> (2013) Joaquin Phoenix’s character is quite often in empty spaces, which is supposed to underline his loneliness. If you think about <em>The Lighthouse</em> (2019), there are a lot of tight, claustrophobic compositions that help to intensify the tension between the two main characters. This is also why they chose to shoot in a <span>1.19:1 aspect ratio, which is even tighter than 4:3 (1.33:1).</span></p>
<h2 id="toc-ei25-step-3-engaging-characters-without-action">
<span class="sectionnum">3.</span> Engaging characters without action</h2>
<figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=vGvDCmuDKKE&amp;t=0">
<iframe src="https://www.youtube.com/embed/vGvDCmuDKKE?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure>
<h3 id="toc-8rxu-1-internal-conflict">Internal conflict</h3>
<p>In the types of films and TV shows we’re talking about, the main characters usually have some sort of deep, internal dilemma… because they’re not reacting to dramatic events. Back to <em>Lost in Translation</em>, both main characters are having existential crises; Bob is coming to the end of his career, and Charlotte is drifting, without knowing what to do next. Both characters are looking for purpose and connection, and it's this that plays out through the mood, the small interactions between the characters, and even through the moments of quiet.</p>
<h3 id="toc-l49s-2-impactful-dialogue">Impactful dialogue</h3>
<p>It’s quality over quantity here because mood-driven stories often benefit from minimal dialogue, but that dialogue needs to really hit home. There are tons of ways for characters to express themselves without using words, such as through their body language or facial expressions.</p>
<h2 id="toc-15t9-step-4-embrace-the-stillness">
<span class="sectionnum">4.</span> Embrace the stillness</h2>
<figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=lMw5fy_wHSY&amp;t=0">
<iframe src="https://www.youtube.com/embed/lMw5fy_wHSY?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure>
<h3 id="toc-vf1l-1-its-oh-so-quiet">It’s oh so quiet…</h3>
<p><a href="https://photography.tutsplus.com/articles/the-sound-of-silence-how-the-absence-of-sound-is-used-as-a-narrative-tool-in-film--cms-108987"><span>Silence</span></a> and being still can be just as powerful as dialogue. Get comfortable with letting the characters exist in their world and develop through interactions and other techniques we’ve mentioned, rather than needing to drive the plot forwards.</p>
<h3 id="toc-wk1h-2-repetition-and-rhythm-repetition-and-rhythm">Repetition and rhythm. Repetition and rhythm.</h3>
<p>Bringing back the same imagery or music motifs can be a great way to reinforce your emotions. Repetition isn’t always literal either, it could be represented by a character stuck in their ways or thoughts, or by a cycle of behaviour. It could also be literal of course!</p>
<p>There might be a place the character goes to, they might perform the same routines… and so on. The rhythm comes from how these scenes feel and how they dictate the mood. If the narrative progresses slowly and smoothly it might reflect an introspective journey, and if it was disjointed then it might show us the person is feeling fragmented or unstable.</p>
<h2 id="toc-hyz8-step-5-mood-through-sound-design">
<span class="sectionnum">5.</span> Mood through sound design</h2>
<p>It’s not just what you show, what we hear can also manipulate how an audience feels. The score for a film or show should complement the mood you’re going for, without overwhelming it. It’s not just music either, think about sound effects, ambient sound and even the lack of any of those.</p>
<p><strong>Non-diegetic sound:</strong> Sound that is added for the audience but doesn’t exist in the world of the characters. This is usually much of the film score.</p>
<p><strong>Diegetic sound:</strong> Sound that the characters can hear and is part of their world. For example, if someone was listening to the radio or watching TV, that’s diegetic.</p>
<ul>
<li><a href="https://www.bbcmaestro.com/blog/diegetic-vs-non-diegetic-sound" target="_blank" rel="noopener">What is the difference between diegetic sound and non diegetic sound?</a></li>
</ul>
<h2 id="toc-byiv-must-watch-films-and-tv-shows-that-are-mood-driven">Must-watch films and TV shows that are mood-driven</h2>
<h3 id="toc-g5au-the-leftovers-2014-2017">1. The Leftovers (2014-2017)</h3>
<figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=FLT3YUALJno&amp;t=0">
<iframe src="https://www.youtube.com/embed/FLT3YUALJno?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure>
<p>This is a really weighty series that’s very emotionally driven and introspective. 2% of the population disappears without explanation and the show focuses on the people left behind and how they cope.</p>
<h3 id="toc-alyh-eternal-sunshine-of-the-spotless-mind-2004">2. Eternal Sunshine of the Spotless Mind (2004)</h3>
<figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=07-QBnEkgXU&amp;t=0">
<iframe src="https://www.youtube.com/embed/07-QBnEkgXU?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure>
<p>Joel has a procedure to wipe out all his memories of his ex-girlfriend Clementine. This is a great example of a fragmented narrative because it jumps about all over the place between reality and a memory that’s breaking down.</p>
<h3 id="toc-ruyq-melancholia-2001">3. Melancholia (2001)</h3>
<figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=6IZGwvxhXvw&amp;t=0">
<iframe src="https://www.youtube.com/embed/6IZGwvxhXvw?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure>
<p>As a disaster film you’d think this would be packed with action, but nope, it’s all about two sisters, Justine and Claire unravelling in their own ways as a planet called Melancholia is on course to collide with earth.</p>
<h3 id="toc-rapm-top-of-the-lake-2013-2017">4. Top of the Lake (2013-2017)</h3>
<figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=i2IuO6_-K5U&amp;t=0">
<iframe src="https://www.youtube.com/embed/i2IuO6_-K5U?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure>
<p>A crime drama by Jane Campion but very much a slow burn with minimal action. It’s all about mood, atmosphere, and exploring the characters and their relationships. There’s a lovely slow pacing to this and you end up not really focusing on whether the crime is solved.</p>
<h3 id="toc-p1yw-field-of-dreams-1989">5. Field of Dreams (1989)</h3>
<figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=Ut06d4dptWo&amp;t=0">
<iframe src="https://www.youtube.com/embed/Ut06d4dptWo?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure>
<p>This is a gentle, nostalgic look at faith and redemption. Ray is a farmer who hears a voice telling him to build a baseball diamond in his cornfield (I know, I know). It’s very sappy, mushy nonsense but it’s still kinda great for that.</p>
<h2 id="toc-0bzn-more-free-film-articles">More free film articles</h2>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://photography.tutsplus.com/articles/what-is-hyperrealism-in-film--cms-109052"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/posts/109052/preview_image/hyperrealism_thumb.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/412/posts/109052/preview_image/hyperrealism_thumb.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/412/posts/109052/preview_image/hyperrealism_thumb.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/412/posts/109052/preview_image/hyperrealism_thumb.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/posts/109052/preview_image/hyperrealism_thumb.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/posts/109052/preview_image/hyperrealism_thumb.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What is hyperrealism in film?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Marie Gardiner</div>
<div class="roundup-block__published-date">11 Feb 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://photography.tutsplus.com/articles/director-feature-alfred-hitchcock--cms-109033"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/109033/preview_image/hitchcock.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/30/posts/109033/preview_image/hitchcock.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/109033/preview_image/hitchcock.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/109033/preview_image/hitchcock.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/109033/preview_image/hitchcock.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/109033/preview_image/hitchcock.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Director feature: Alfred Hitchcock</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Marie Gardiner</div>
<div class="roundup-block__published-date">04 Feb 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://photography.tutsplus.com/tutorials/non-linear-storytelling-in-film--cms-109045"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/109045/preview_image/pulp_fiction.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/30/posts/109045/preview_image/pulp_fiction.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/109045/preview_image/pulp_fiction.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/109045/preview_image/pulp_fiction.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/109045/preview_image/pulp_fiction.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/109045/preview_image/pulp_fiction.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">What do we mean by “non-linear storytelling” in film?</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Marie Gardiner</div>
<div class="roundup-block__published-date">17 Jan 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://photography.tutsplus.com/articles/cyborgs-and-cinema--cms-108996"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/108996/preview_image/android.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/30/posts/108996/preview_image/android.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/108996/preview_image/android.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/108996/preview_image/android.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/108996/preview_image/android.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/108996/preview_image/android.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Cyborgs and cinema 🤖 How films have evolved in their depiction of cyborgs</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/412/profiles/18841/profileImage/me_web_size.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Marie Gardiner</div>
<div class="roundup-block__published-date">06 Jan 2025</div>
</div>
</div>
</div>
</div></a></li>
</ul>
<h2 id="toc-4gz1-about-this-page">About this page</h2>
<p>This page was written by <span><a href="https://tutsplus.com/authors/marie-gardiner" target="_blank" rel="noopener">Marie Gardiner</a><u></u></span>. Marie is a writer, author, and photographer. It was edited by <a href="https://tutsplus.com/authors/andrew-blackman" target="_blank" rel="noopener">Andrew Blackman</a>. Andrew is a freelance writer and editor, and is a copy editor for Envato Tuts+.</p>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/109135/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109135/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109135/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109135/a2t.img" width="1" /></div></content>
<published>2025-07-04 09:21:00 UTC</published>
<updated>2025-07-04 09:21:00 UTC</updated>
<author>
<name>Marie Gardiner</name>
</author>
</entry>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/cms-109187</id>
<published>2025-05-26T20:57:29+00:00</published>
<link rel="alternate" type="text/html" href="https://webdesign.tutsplus.com/color-contrast-checker--cms-109187t"/>
<title>Create a color contrast checker with HTML, CSS, and JavaScript</title>
<content type="html"><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="iufx">
<p>By “color contrast” we’re referring to the difference in brightness between foreground and background colors. In simpler terms, it defines how easy it is for the human eye to recognize text or images on a coloured background.</p>
<p>The <a href="https://www.w3.org/WAI/standards-guidelines/wcag/" target="_blank" rel="noopener">Web Content Accessibility Guidelines</a> (WCAG) provide specific recommendations regarding color contrast for text to make web content accessible and visible to people with impaired vision.</p>
<p>It recommends a minimum contrast ratio of <strong>4.5:1</strong> for normal text. For larger text, the minimum recommended contrast ratio is <strong>3:1</strong>. According to the WCAG, larger text is defined as <strong>24px</strong> or larger for normal-weight fonts and <strong>18.66px</strong> or larger for bold text. </p>
<p>For example, if you have a dark background with dark-colored text, the text will not be easily readable, as seen below.</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1885/posts/109187/image-upload/color_contrast.png" loading="lazy" width="870px" height="370px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1885/posts/109187/image-upload/color_contrast.png 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1885/posts/109187/image-upload/color_contrast.png" loading="lazy" width="650px" height="279px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1885/posts/109187/image-upload/color_contrast.png 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/posts/109187/image-upload/color_contrast.png" loading="lazy" width="380px" height="168px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/posts/109187/image-upload/color_contrast.png 2x"></figure>
<h2 id="toc-u4ui-how-is-contrast-ratio-calculated">How is contrast ratio calculated?</h2>
<p>The contrast ratio between two colors is calculated using the following formula.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table shell"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre>contrast ratio <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0">(</span>L1 + 0.05<span style="color: #d0d0d0">)</span> /<span style="color: #d0d0d0">(</span> L2+0.05<span style="color: #d0d0d0">)</span>
</pre></td>
</tr></tbody></table></div>
<p><code>L1</code> is the relative luminance of the lighter color, and <code>L2</code> is the relative luminance of the darker color. While higher contrast is generally recommended to meet accessibility standards, moderate contrast is the best as it reduces eye strain. </p>
<p>Luminance, on the other hand, is the perceived brightness of a color, and it's calculated based on RGB values of that color as shown below:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table plaintext"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre>R0 = R/255
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre>G0 = G/255
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre>B0 = B/255
</pre></td>
</tr>
</tbody></table></div>
<p>Once we obtain these values, we linearise each component as follows:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">let</span> <span style="color: #d0d0d0;background-color: #151515">r</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">R0</span> <span style="color: #d0d0d0">&lt;=</span> <span style="color: #90a959">0.03928</span> <span style="color: #d0d0d0">?</span> <span style="color: #d0d0d0;background-color: #151515">R0</span> <span style="color: #d0d0d0">/</span> <span style="color: #90a959">12.92</span> <span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">Math</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">pow</span><span style="color: #d0d0d0">((</span><span style="color: #d0d0d0;background-color: #151515">R0</span> <span style="color: #d0d0d0">+</span> <span style="color: #90a959">0.055</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">/</span> <span style="color: #90a959">1.055</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">2.4</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">let</span> <span style="color: #d0d0d0;background-color: #151515">g</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">G0</span> <span style="color: #d0d0d0">&lt;=</span> <span style="color: #90a959">0.03928</span> <span style="color: #d0d0d0">?</span> <span style="color: #d0d0d0;background-color: #151515">G0</span> <span style="color: #d0d0d0">/</span> <span style="color: #90a959">12.92</span> <span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">Math</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">pow</span><span style="color: #d0d0d0">((</span><span style="color: #d0d0d0;background-color: #151515">G0</span> <span style="color: #d0d0d0">+</span> <span style="color: #90a959">0.055</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">/</span> <span style="color: #90a959">1.055</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">2.4</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">let</span> <span style="color: #d0d0d0;background-color: #151515">b</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">B0</span> <span style="color: #d0d0d0">&lt;=</span> <span style="color: #90a959">0.03928</span> <span style="color: #d0d0d0">?</span> <span style="color: #d0d0d0;background-color: #151515">B0</span> <span style="color: #d0d0d0">/</span> <span style="color: #90a959">12.92</span> <span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">Math</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">pow</span><span style="color: #d0d0d0">((</span><span style="color: #d0d0d0;background-color: #151515">B0</span> <span style="color: #d0d0d0">+</span> <span style="color: #90a959">0.055</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">/</span> <span style="color: #90a959">1.055</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">2.4</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Finally, we compute the relative luminance like so:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table plaintext"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre>Luminance = 0.2126 * R0+0.07152* G0+0.0722*B0
</pre></td>
</tr></tbody></table></div>
<p><span>Now that we know how to calculate the contrast ratio, let’s build our own color contrast tool!</span></p>
<h2 id="toc-vd8v-heres-what-were-working-towards"><span>Here’s what we’re working towards</span></h2>
<p><iframe src="https://codepen.io/tutsplus/embed/MYwxWwZ?default-tab=result" width="850" height="500" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy">
</iframe></p>
<h2 id="toc-1zxq-html-structure">HTML Structure</h2>
<p>The HTML structure will have the following elements:</p>
<ul>
<li>Color pickers for selecting the foreground and background colors</li>
<li>A display area to indicate whether the selected color combination meets the WCAG guidelines.</li>
<li>A preview area that displays sample text to visually demonstrate readability. </li>
<li>A paragraph displaying the contrast ratio of the selected colors. </li>
</ul>
<p>The code for the HTML markup will look like this:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table html"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"container"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;h1&gt;</span>Color Contrast Checker<span style="color: #f4bf75">&lt;/h1&gt;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"color-pickers"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"color-picker"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;label</span> <span style="color: #6a9fb5">for=</span><span style="color: #90a959">"text-color"</span><span style="color: #f4bf75">&gt;</span>Text Color:<span style="color: #f4bf75">&lt;/label&gt;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;input</span> <span style="color: #6a9fb5">type=</span><span style="color: #90a959">"color"</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"text-color"</span> <span style="color: #6a9fb5">value=</span><span style="color: #90a959">"#000000"</span> <span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;input</span> <span style="color: #6a9fb5">type=</span><span style="color: #90a959">"text"</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"text-color-hex"</span> <span style="color: #6a9fb5">value=</span><span style="color: #90a959">"#000000"</span> <span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;p</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"text-color-error"</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"error-message"</span><span style="color: #f4bf75">&gt;&lt;/p&gt;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"color-picker"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;label</span> <span style="color: #6a9fb5">for=</span><span style="color: #90a959">"bg-color"</span><span style="color: #f4bf75">&gt;</span>Background Color:<span style="color: #f4bf75">&lt;/label&gt;</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;input</span> <span style="color: #6a9fb5">type=</span><span style="color: #90a959">"color"</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"bg-color"</span> <span style="color: #6a9fb5">value=</span><span style="color: #90a959">"#FFFFFF"</span> <span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;input</span> <span style="color: #6a9fb5">type=</span><span style="color: #90a959">"text"</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"bg-color-hex"</span> <span style="color: #6a9fb5">value=</span><span style="color: #90a959">"#FFFFFF"</span> <span style="color: #f4bf75">/&gt;</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;p</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"bg-color-error"</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"error-message"</span><span style="color: #f4bf75">&gt;&lt;/p&gt;</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-19" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>19</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"output"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-20" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>20</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"results"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-21" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>21</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"results-item"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-22" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>22</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;h3&gt;</span>WCAG AA<span style="color: #f4bf75">&lt;/h3&gt;</span>
</pre></td>
</tr>
<tr id="line-23" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>23</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;p&gt;</span>Normal Text: <span style="color: #f4bf75">&lt;span</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"normal_text_aa"</span><span style="color: #f4bf75">&gt;</span>Pass<span style="color: #f4bf75">&lt;/span&gt;&lt;/p&gt;</span>
</pre></td>
</tr>
<tr id="line-24" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>24</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;p&gt;</span>Large Text: <span style="color: #f4bf75">&lt;span</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"large_text_aa"</span><span style="color: #f4bf75">&gt;</span>Pass<span style="color: #f4bf75">&lt;/span&gt;&lt;/p&gt;</span>
</pre></td>
</tr>
<tr id="line-25" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>25</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-26" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>26</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"results-item"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-27" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>27</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;h3&gt;</span>WCAG AAA<span style="color: #f4bf75">&lt;/h3&gt;</span>
</pre></td>
</tr>
<tr id="line-28" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>28</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;p&gt;</span>Normal Text: <span style="color: #f4bf75">&lt;span</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"normal_text_aaa"</span><span style="color: #f4bf75">&gt;</span>Pass<span style="color: #f4bf75">&lt;/span&gt;&lt;/p&gt;</span>
</pre></td>
</tr>
<tr id="line-29" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>29</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;p&gt;</span>Large Text: <span style="color: #f4bf75">&lt;span</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"large_text_aaa"</span><span style="color: #f4bf75">&gt;</span>Pass<span style="color: #f4bf75">&lt;/span&gt;&lt;/p&gt;</span>
</pre></td>
</tr>
<tr id="line-30" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>30</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-31" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>31</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-32" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>32</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-33" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>33</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"preview"</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"preview"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-34" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>34</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;p&gt;</span>This is a preview text<span style="color: #f4bf75">&lt;/p&gt;</span>
</pre></td>
</tr>
<tr id="line-35" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>35</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-36" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>36</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-37" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>37</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"ratio"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-38" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>38</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;h2&gt;</span>Contrast Ratio: <span style="color: #f4bf75">&lt;span</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"contrast-ratio"</span><span style="color: #f4bf75">&gt;&lt;/span&gt;&lt;/h2&gt;</span>
</pre></td>
</tr>
<tr id="line-39" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>39</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-40" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>40</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-41" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>41</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-42" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>42</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;div</span> <span style="color: #6a9fb5">class=</span><span style="color: #90a959">"error"</span><span style="color: #f4bf75">&gt;</span>
</pre></td>
</tr>
<tr id="line-43" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>43</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;p</span> <span style="color: #6a9fb5">id=</span><span style="color: #90a959">"error-message"</span><span style="color: #f4bf75">&gt;&lt;/p&gt;</span>
</pre></td>
</tr>
<tr id="line-44" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>44</pre></td>
<td class="rouge-code"><pre> <span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
<tr id="line-45" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>45</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">&lt;/div&gt;</span>
</pre></td>
</tr>
</tbody></table></div>
<h2 id="toc-sxei-styling-with-css">Styling with CSS</h2>
<p>We'll start by adding some basic styles to the body, the enclosing container, and the title.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">body</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">background-color</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">#fff</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">padding</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.container</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">display</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">flex</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">flex-direction</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">column</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">align-items</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">max-width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">800px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">0</span> <span style="color: #d0d0d0;background-color: #151515">auto</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">gap</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">8px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border-radius</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">8px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">h1</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">text-align</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin-bottom</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">32px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">#333</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-19" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>19</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Align the color picker elements using Flexbox to ensure child elements (i.e. the input and label) are stacked vertically.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.color-pickers</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">display</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">flex</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">gap</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">justify-content</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin-bottom</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.color-picker</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">display</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">flex</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">flex-direction</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">column</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">160px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">gap</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">4px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Style the inputs and labels as shown below:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">label</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-weight</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">600</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">rgb</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0.7</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">input</span><span style="color: #d0d0d0">[</span><span style="color: #f4bf75">type</span><span style="color: #d0d0d0">=</span><span style="color: #90a959">"color"</span><span style="color: #d0d0d0">]</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">40px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">1px</span> <span style="color: #d0d0d0;background-color: #151515">solid</span> <span style="color: #d0d0d0;background-color: #151515">rgb</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0.05</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border-radius</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">4px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">cursor</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">pointer</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">input</span><span style="color: #d0d0d0">[</span><span style="color: #f4bf75">type</span><span style="color: #d0d0d0">=</span><span style="color: #90a959">"text"</span><span style="color: #d0d0d0">]</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">padding</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">8px</span> <span style="color: #90a959">12px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">1px</span> <span style="color: #d0d0d0;background-color: #151515">solid</span> <span style="color: #d0d0d0;background-color: #151515">rgb</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0.05</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border-radius</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">4px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">text-transform</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">uppercase</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>The display area will indicate whether the selected colors have passed the minimum contrast ratio requirement. If they fail, we will show a <em>fail</em> message, otherwise a <em>pass</em> message will be displayed.</p>
<p> Here are the styles for the display area.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.results</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin-bottom</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">display</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">flex</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">gap</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">justify-content</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.results-item</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">text-align</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">padding</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">15px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">min-width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">130px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">1px</span> <span style="color: #d0d0d0;background-color: #151515">solid</span> <span style="color: #d0d0d0;background-color: #151515">rgb</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0.05</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border-radius</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">8px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.results-item</span> <span style="color: #f4bf75">h3</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin-bottom</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">10px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">text-align</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">#333</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-19" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>19</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.results-item</span> <span style="color: #f4bf75">p</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-20" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>20</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin-bottom</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">5px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-21" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>21</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-22" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>22</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.pass</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-23" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>23</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">#38a169</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-24" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>24</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-weight</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">bold</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-25" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>25</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-26" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>26</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.fail</span><span style="color: #d0d0d0">,</span>
</pre></td>
</tr>
<tr id="line-27" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>27</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.error-message</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-28" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>28</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">#e53e3e</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-29" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>29</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-weight</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">bold</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-30" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>30</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Add these styles to the preview and contrast ratio elements .</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.preview</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">display</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">flex</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">align-items</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">justify-content</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">min-height</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">margin-bottom</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">20px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-size</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">24px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">border</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">1px</span> <span style="color: #d0d0d0;background-color: #151515">solid</span> <span style="color: #d0d0d0;background-color: #151515">rgb</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">0.05</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">100%</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">max-width</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">600px</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.ratio</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">text-align</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">center</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">font-style</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">italic</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">#333</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>We'll also have styles for error messages.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table css"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.error</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">color</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">#e53e3e</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre><span style="color: #f4bf75">.error-message</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">display</span><span style="color: #d0d0d0">:</span> <span style="color: #d0d0d0;background-color: #151515">none</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Our simple interface now looks like this:</p>
<figure class="post_image"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/1885/posts/109187/image-upload/color_tool.png" loading="lazy" width="870px" height="675px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/1885/posts/109187/image-upload/color_tool.png 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/1885/posts/109187/image-upload/color_tool.png" loading="lazy" width="650px" height="505px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/1885/posts/109187/image-upload/color_tool.png 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/1885/posts/109187/image-upload/color_tool.png" loading="lazy" width="380px" height="297px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/1885/posts/109187/image-upload/color_tool.png 2x"></figure>
<h2 id="toc-rn01-color-contrast-functionality-with-javascript">Color contrast functionality with JavaScript</h2>
<p>To get accurate color contrast ratios, we'll use the WCAG contrast checker API, which provides an easy way to check the contrast between any two colors. The color contrast ratio is obtained by providing the foreground and background color values to the API, as shown below.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table shell"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre>https://webaim.org/resources/contrastchecker/?fcolor<span style="color: #d0d0d0">=</span>0000FF&amp;bcolor<span style="color: #d0d0d0">=</span>FFFFFF&amp;api
</pre></td>
</tr></tbody></table></div>
<p>Here we are using black for the text and white for the background.</p>
<p>The output is a JSON object that looks something like this:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table shell"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #90a959">"ratio"</span>: <span style="color: #90a959">"8.59"</span>,
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #90a959">"AA"</span>: <span style="color: #90a959">"pass"</span>,
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #90a959">"AALarge"</span>: <span style="color: #90a959">"pass"</span>,
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #90a959">"AAA"</span>: <span style="color: #90a959">"pass"</span>,
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #90a959">"AAALarge"</span>: <span style="color: #90a959">"pass"</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>A ratio of <strong>8.59</strong> means the two colors pass the minimum color contrast guidelines. The <em>pass</em> status means the colors also pass the WCAG requirements for both normal text (AA) and large text (AA). </p>
<p>The pass on AAA means the contrast ratio passes the most strict compliance level. </p>
<p>Select all the elements we'll be working with. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">textColorInput</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">text-color</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">bgColorInput</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">bg-color</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">textColorHex</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">text-color-hex</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">bgColorHex</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">bg-color-hex</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">textColorError</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">text-color-error</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">bgColorError</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">bg-color-error</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">normal_text_aa</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">normal_text_aa</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">large_text_aa</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">large_text_aa</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">normal_text_aaa</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">normal_text_aaa</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">large_text_aaa</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">large_text_aaa</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">preview</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">preview</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">contrastRatio</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">document</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">getElementById</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">contrast-ratio</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Next, we'll get the currently selected color values from each of the color picker inputs. Create a function called <code>updateColors</code> which looks like this:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">function</span> <span style="color: #d0d0d0;background-color: #151515">updateColors</span><span style="color: #d0d0d0">()</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">textColor</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">textColorInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">bgColor</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">bgColorInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">preview</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">style</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">color</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">textColor</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">preview</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">style</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">backgroundColor</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">bgColor</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>This function gets the current values and applies them to the preview. The selected background color is used as the preview's background while the selected foreground color is applied to the text.</p>
<p>Invoke the <code>updateColors</code> function to ensure the preview visually reflects how the text appears on the chosen background. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">updateColors</span><span style="color: #d0d0d0">();</span>
</pre></td>
</tr></tbody></table></div>
<h2 id="toc-tpyh-color-validation">Color validation</h2>
<p>Before calculating the contrast ratio of the selected colors, we'll first need to validate and sync the color values. This will ensure that when a color is selected using the color picker, the corresponding HEX input value is updated and vice versa. </p>
<p>To do that, we'll create two functions, one for validating the foreground and another for validating the background color. </p>
<p>Create a function called <code>updateTextColorFromHex</code> .</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">function</span> <span style="color: #d0d0d0;background-color: #151515">updateTextColorFromHex</span><span style="color: #d0d0d0">()</span> <span style="color: #d0d0d0">{}</span>
</pre></td>
</tr></tbody></table></div>
<p>Get the current hex value from the text color input.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">let</span> <span style="color: #d0d0d0;background-color: #151515">hexValue</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">textColorHex</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr></tbody></table></div>
<p>Check if the value provided starts with the # symbol, if it doesn't, append the symbol at the start of the value. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #aa759f">if </span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">hexValue</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">charAt</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">0</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">!==</span> <span style="color: #90a959">"</span><span style="color: #90a959">#</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">hexValue</span> <span style="color: #d0d0d0">=</span> <span style="color: #90a959">"</span><span style="color: #90a959">#</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">+</span> <span style="color: #d0d0d0;background-color: #151515">hexValue</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Perform another validation to ensure the provided HEX value is a valid and existing color. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #aa759f">if </span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0">!</span><span style="color: #d0d0d0;background-color: #151515">isValidHex</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">hexValue</span><span style="color: #d0d0d0">))</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">textColorError</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">textContent</span> <span style="color: #d0d0d0">=</span> <span style="color: #90a959">"</span><span style="color: #90a959">incorrect color</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">return</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>If the hex value of the color provided is invalid, show a message and exit the function. If it's a valid color, clear the error message and sync the input value and the color picker to ensure the text input and the color input both show the same color.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">textColorError</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">textContent</span> <span style="color: #d0d0d0">=</span> <span style="color: #90a959">""</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">textColorError</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">style</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">display</span> <span style="color: #d0d0d0">=</span> <span style="color: #90a959">"</span><span style="color: #90a959">block</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">textColorInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">hexValue</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">textColorHex</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">hexValue</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
</tbody></table></div>
<p>The helper <code>isValidHex</code> function uses a regular expression to test the input value and it looks like this:</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">function</span> <span style="color: #d0d0d0;background-color: #151515">isValidHex</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">hex</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">return</span> <span style="color: #75b5aa">/^#</span><span style="color: #8f5536">([</span><span style="color: #75b5aa">A-Fa-f0-9</span><span style="color: #8f5536">]{6}</span><span style="color: #75b5aa">|</span><span style="color: #8f5536">[</span><span style="color: #75b5aa">A-Fa-f0-9</span><span style="color: #8f5536">]{3})</span><span style="color: #75b5aa">$/</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">test</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">hex</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>We'll perform a similar validation for the background color.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table plaintext"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre> function updateBgColorFromHex() {
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> let hexValue = bgColorHex.value;
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> if (hexValue.charAt(0) !== "#") {
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> hexValue = "#" + hexValue;
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> }
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> if (!isValidHex(hexValue)) {
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre> bgColorError.textContent = "incorrect color";
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre> bgColorError.style.display = "block";
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre> return;
</pre></td>
</tr>
<tr id="line-13" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>13</pre></td>
<td class="rouge-code"><pre> }
</pre></td>
</tr>
<tr id="line-14" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>14</pre></td>
<td class="rouge-code"><pre> bgColorError.textContent = "";
</pre></td>
</tr>
<tr id="line-15" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>15</pre></td>
<td class="rouge-code"><pre> bgColorInput.value = hexValue;
</pre></td>
</tr>
<tr id="line-16" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>16</pre></td>
<td class="rouge-code"><pre> bgColorHex.value = hexValue;
</pre></td>
</tr>
<tr id="line-17" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>17</pre></td>
<td class="rouge-code"><pre> updateColors()
</pre></td>
</tr>
<tr id="line-18" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>18</pre></td>
<td class="rouge-code"><pre> }
</pre></td>
</tr>
</tbody></table></div>
<h2 id="toc-xqli-event-listeners">Event listeners </h2>
<p>It is also important to ensure that when the color or text input change, the corresponding values are updated. We do this by adding input event listeners to the elements. </p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">textColorHex</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">addEventListener</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">input</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">updateTextColorFromHex</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">bgColorHex</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">addEventListener</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">input</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">updateBgColorFromHex</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">textColorInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">addEventListener</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">input</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">function </span><span style="color: #d0d0d0">()</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">textColorHex</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">textColorInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">updateColors</span><span style="color: #d0d0d0">();</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">});</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">bgColorInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">addEventListener</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">input</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">function </span><span style="color: #d0d0d0">()</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">bgColorHex</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">bgColorInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">updateColors</span><span style="color: #d0d0d0">();</span>
</pre></td>
</tr>
<tr id="line-12" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>12</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">});</span>
</pre></td>
</tr>
</tbody></table></div>
<ul class="roundup-block__contents posts--half-width roundup-block--list"><li class="roundup-block__content"><a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/tutorials/introduction-to-javascript-event-listeners--cms-35236"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/35236/preview_image/click.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/35236/preview_image/click.png 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/35236/preview_image/click.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/35236/preview_image/click.png 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/35236/preview_image/click.png" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/35236/preview_image/click.png 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">An Introduction to JavaScript Event Listeners for Web Designers</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/20515/profileImage/wvQWK027_400x400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Anna Monus</div>
<div class="roundup-block__published-date">25 Jul 2023</div>
</div>
</div>
</div>
</div></a></li></ul>
<h2 id="toc-pqig-contract-ckecker">Contrast checker</h2>
<p>The next step is to pass the current foreground and background hex color values to the API.</p>
<p>Create a function called <code>getContrastRatio</code>, which takes two arguments namely, <code>foreground</code> and <code>background</code>.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">function</span> <span style="color: #d0d0d0;background-color: #151515">getContrastRatio</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">foreground</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">background</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #949494">//logic goes here
</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Since the API takes the values without the # symbol, we'll remove the # character using the <code>replace()</code> method, as shown below.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">fcolor</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">foreground</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">replace</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">#</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">""</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">bcolor</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">background</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">replace</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">#</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span> <span style="color: #90a959">""</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Here, we are replacing the # symbol with an empty string. For example, if the hex value is #FFFFFF, the output will be FFFFFF.</p>
<p>Append the values to the API string.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">apiUrl</span> <span style="color: #d0d0d0">=</span> <span style="color: #90a959">`https://webaim.org/resources/contrastchecker/?
</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #90a959"> fcolor=</span><span style="color: #d0d0d0">${</span><span style="color: #d0d0d0;background-color: #151515">fcolor</span><span style="color: #d0d0d0">}</span><span style="color: #90a959">&amp;bcolor=</span><span style="color: #d0d0d0">${</span><span style="color: #d0d0d0;background-color: #151515">bcolor</span><span style="color: #d0d0d0">}</span><span style="color: #90a959">&amp;api`</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Using <code>fetch()</code>, make a network request to the WebAIMi API and handle any occurring errors gracefully.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">fetch</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">apiUrl</span><span style="color: #d0d0d0">)</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">then</span><span style="color: #d0d0d0">((</span><span style="color: #d0d0d0;background-color: #151515">response</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">=&gt;</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">if </span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0">!</span><span style="color: #d0d0d0;background-color: #151515">response</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">ok</span><span style="color: #d0d0d0">)</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">throw</span> <span style="color: #aa759f">new</span> <span style="color: #f4bf75">Error</span><span style="color: #d0d0d0">(</span><span style="color: #90a959">"</span><span style="color: #90a959">Network response was not ok</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #aa759f">return</span> <span style="color: #d0d0d0;background-color: #151515">response</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">json</span><span style="color: #d0d0d0">();</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0">})</span>
</pre></td>
</tr>
</tbody></table></div>
<h3 id="toc-3rok-update-the-results">Update the results</h3>
<p>If the API response is successful, we'll get a JSON object containing the contrast ratio and the output of the contrast check, either a fail or a pass in this format.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #90a959">"</span><span style="color: #90a959">ratio</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">8.59</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #90a959">"</span><span style="color: #90a959">AA</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #90a959">"</span><span style="color: #90a959">AALarge</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #90a959">"</span><span style="color: #90a959">AAA</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">,</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #90a959">"</span><span style="color: #90a959">AAALarge</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>where:</p>
<ul>
<li>AA - normal text</li>
<li>AALarge - large text</li>
<li>AAA - strict compliance for normal text</li>
<li>AAALarge - strict compliance for large text</li>
</ul>
<p>We'll then update the results to the page by appending them to the appropriate elements.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">normal_text_aa</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">textContent</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">data</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">AA</span> <span style="color: #d0d0d0">===</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">?</span> <span style="color: #90a959">"</span><span style="color: #90a959">Pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">Fail</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">normal_text_aa</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">className</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">data</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">AA</span> <span style="color: #d0d0d0">===</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">?</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">fail</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">large_text_aa</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">textContent</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">data</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">AALarge</span> <span style="color: #d0d0d0">===</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">?</span> <span style="color: #90a959">"</span><span style="color: #90a959">Pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">Fail</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">large_text_aa</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">className</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">data</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">AALarge</span> <span style="color: #d0d0d0">===</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">?</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">fail</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">normal_text_aaa</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">textContent</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">data</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">AAA</span> <span style="color: #d0d0d0">===</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">?</span> <span style="color: #90a959">"</span><span style="color: #90a959">Pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">Fail</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-8" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>8</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">normal_text_aaa</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">className</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">data</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">AAA</span> <span style="color: #d0d0d0">===</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">?</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">fail</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-9" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>9</pre></td>
<td class="rouge-code"><pre>
</pre></td>
</tr>
<tr id="line-10" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>10</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">large_text_aaa</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">textContent</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">data</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">AAALarge</span> <span style="color: #d0d0d0">===</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">?</span> <span style="color: #90a959">"</span><span style="color: #90a959">Pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">Fail</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-11" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>11</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0;background-color: #151515">large_text_aaa</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">className</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">data</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">AAALarge</span> <span style="color: #d0d0d0">===</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">?</span> <span style="color: #90a959">"</span><span style="color: #90a959">pass</span><span style="color: #90a959">"</span> <span style="color: #d0d0d0">:</span> <span style="color: #90a959">"</span><span style="color: #90a959">fail</span><span style="color: #90a959">"</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Here, each result is displayed as either a Pass or Fail, accompanied by styling that uses red for fail and green for pass.</p>
<p>The final step is to update the <code>updateColors()</code> function to ensure the selected colors are passed to the <code>getContrastRatio()</code> function.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody>
<tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre><span style="color: #d28445">function</span> <span style="color: #d0d0d0;background-color: #151515">updateColors</span><span style="color: #d0d0d0">()</span> <span style="color: #d0d0d0">{</span>
</pre></td>
</tr>
<tr id="line-2" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>2</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">textColor</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">textColorInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-3" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>3</pre></td>
<td class="rouge-code"><pre> <span style="color: #d28445">const</span> <span style="color: #d0d0d0;background-color: #151515">bgColor</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">bgColorInput</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">value</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-4" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>4</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">preview</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">style</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">color</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">textColor</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-5" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>5</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">preview</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">style</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">backgroundColor</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">bgColor</span><span style="color: #d0d0d0">;</span>
</pre></td>
</tr>
<tr id="line-6" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>6</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">getContrastRatio</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">textColor</span><span style="color: #d0d0d0">,</span> <span style="color: #d0d0d0;background-color: #151515">bgColor</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr>
<tr id="line-7" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>7</pre></td>
<td class="rouge-code"><pre><span style="color: #d0d0d0">}</span>
</pre></td>
</tr>
</tbody></table></div>
<p>Don’t forget to update the contrast ratio by setting the ratio value as the text content.</p>
<div class="rouge-syntax-highlight"><table class="rouge-line-table javascript"><tbody><tr id="line-1" class="lineno">
<td class="rouge-gutter gl" style="-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none;user-select: none;"><pre>1</pre></td>
<td class="rouge-code"><pre> <span style="color: #d0d0d0;background-color: #151515">contrastRatio</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">textContent</span> <span style="color: #d0d0d0">=</span> <span style="color: #d0d0d0;background-color: #151515">parseFloat</span><span style="color: #d0d0d0">(</span><span style="color: #d0d0d0;background-color: #151515">data</span><span style="color: #d0d0d0">.</span><span style="color: #d0d0d0;background-color: #151515">ratio</span><span style="color: #d0d0d0">);</span>
</pre></td>
</tr></tbody></table></div>
<h2 id="toc-7cgz-the-final-demo">The final demo</h2>
<p>Here is the final demo!</p>
<p><iframe src="https://codepen.io/tutsplus/embed/MYwxWwZ?default-tab=result" width="850" height="500" frameborder="no" scrolling="no" allowfullscreen="true" loading="lazy">
</iframe></p>
<h2 id="toc-ftbm-conclusion">Conclusion</h2>
<p>That's a wrap for this tutorial! We have learned how to build a tool that checks contrast ratios to help adhere to WCAG guidelines. Hopefully, you now feel equipped to create more accessible and user-friendly designs.</p>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/articles/building-an-inclusive-web-why-accessibility-matters--cms-29773"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/29773/preview_image/brideg-a11y.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Building an Inclusive Web: Why Accessibility Matters</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/20418/profileImage/RlQ_WWuR_400x400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Sami Keijonen</div>
<div class="roundup-block__published-date">03 Dec 2017</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/articles/accessibility-basics-designing-for-visual-impairment--cms-27634"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/27634/preview_image/pre.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/27634/preview_image/pre.png 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/27634/preview_image/pre.png" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/27634/preview_image/pre.png 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/27634/preview_image/pre.png" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/27634/preview_image/pre.png 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Accessibility Basics: Designing for Visual Impairment
</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/19988/profileImage/graeme.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/19988/profileImage/graeme.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/19988/profileImage/graeme.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/19988/profileImage/graeme.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/19988/profileImage/graeme.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/19988/profileImage/graeme.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Graeme Fulton</div>
<div class="roundup-block__published-date">13 Jun 2022</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://webdesign.tutsplus.com/articles/how-to-use-the-contrast-checker-in-chrome-devtools--cms-31504"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/31504/preview_image/pre.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/31504/preview_image/pre.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/posts/31504/preview_image/pre.jpg" alt="" loading="lazy" width="420px" height="297px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/31504/preview_image/pre.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/31504/preview_image/pre.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/31504/preview_image/pre.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">How to Use the Contrast Checker in Chrome DevTools</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/2532/profileImage/kezz.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/2532/profileImage/kezz.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/2532/profileImage/kezz.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/2532/profileImage/kezz.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/2532/profileImage/kezz.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/2532/profileImage/kezz.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Kezz Bracey</div>
<div class="roundup-block__published-date">22 Oct 2018</div>
</div>
</div>
</div>
</div></a></li>
</ul>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/109187/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109187/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109187/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/109187/a2t.img" width="1" /></div></content>
<published>2025-07-02 09:59:00 UTC</published>
<updated>2025-07-02 09:59:00 UTC</updated>
<author>
<name>Esther Vaati</name>
</author>
</entry>
<entry>
<id>tag:tutsplus.com,2005:PostPresenter/ae-14005</id>
<published>2014-01-20T02:05:58+00:00</published>
<link rel="alternate" type="text/html" href="https://photography.tutsplus.com/articles/how-to-quickly-create-3d-text-animations-in-after-effects--ae-14005"/>
<title>How to create 3D text animations in After Effects fast</title>
<content type="html"><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}</style><div data-content-block-type="Wysi" id="ic0i" class="content-block-wysi content-block">
<p><span>It’s important to know the value of text in a video. Titles, captions, and more deserve the best styles. In this tutorial, you’ll learn how to create 3D text in After Effects. </span></p>
<p><span><a href="https://photography.tutsplus.com/video/compatible-with/adobe-after-effects" target="_self">Adobe After Effects</a> is a versatile app for bringing amazing video graphics to life. It helps you <a href="https://elements.envato.com/learn/animation-tutorials" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">create animations</a>, titles, and countless other effects. </span></p>
<p><span>After Effects 3D text effects add a new dimension to text in your videos. They’re sure to grab audience attention, and thanks to templates, they’re easy to build.</span></p>
<p><span>Let’s get started!</span></p>
<h2 id="toc-v7n2-why-create-after-effects-3d-text-effects"><span>Why create After Effects 3D text effects?</span></h2>
<p><span>3D text animation has an array of amazing benefits that you and your audience will enjoy. </span></p>
<p><span>Consider this when you think about using 3D text in After Effects:</span></p>
<ul>
<li>
<strong>3D text boosts your visual style.</strong><span> Flat effects can make videos dull and uninteresting. 3D animated text elevates the look and feel of any clip.</span>
</li>
<li>
<strong>You’ll gain attention from viewers.</strong><span> If you’ve ever seen a 3D video, you’ll know that they hold your focus. Take advantage of this in your own video projects with the text. </span>
</li>
<li>
<strong>It helps highlight key details.</strong><span> 3D text helps you add context to your video content. It’s a winning tool for captions, lower thirds, title cards, and so much more. </span>
</li>
<li>
<strong>It’s easier to read. </strong><span>The added dimension of depth makes 3D text easier to read. Sharing videos with an audience? This helps ensure your titles and captions are read. </span>
</li>
<li>
<strong>3D effects are popular marketing tools.</strong><span> Using your videos to promote a product or service? 3D animated text is a game-changer. They're attention-grabbing and help you attract new customers.</span>
</li>
</ul>
<p><span>As you can see, there are many benefits to 3D text effects. Consider how you’ll use them in your next project.</span></p>
<p><span>Now, let’s learn how to make 3D text in After Effects, step by step.</span></p>
<h2 id="toc-puhw-how-to-create-3d-letters-in-adobe-after-effects-step-by-step"><span>How to make a 3D text animation in After Effects</span></h2>
<p><span>For this tutorial, we’ll use the premium <a href="https://elements.envato.com/3d-text-openers-V79RJPB" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">3D Text Openers</a> template from Envato. It</span><span> has several beautiful color combos, and it’s easy to edit.</span></p>
<p><span>So let’s dive in and learn how to create a 3D text animation in After Effects.</span></p>
<h3 id="toc-cjyg-launch-a-3d-text-animation-template-in-after-effects"><span>1. Launch a 3D text animation template in After Effects</span></h3>
<p><span>With your template downloaded, you’ll need to open it in Adobe After Effects. Begin by finding the downloaded folder. </span></p>
<p><span>Inside, explore the contents. This one includes a folder with the actual project, and it has a handy help guide to show you how to work with the template.</span></p>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/modify_3d_text_after_effects.jpg" alt="Modify the 3D text effect in After Effects" loading="lazy" width="870px" height="442px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/modify_3d_text_after_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/modify_3d_text_after_effects.jpg" alt="Modify the 3D text effect in After Effects" loading="lazy" width="650px" height="333px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/modify_3d_text_after_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/modify_3d_text_after_effects.jpg" alt="Modify the 3D text effect in After Effects" loading="lazy" width="380px" height="199px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/modify_3d_text_after_effects.jpg 2x"></a>
<figcaption>Find the .aep file and double-click on open it in After Effects.</figcaption>
</figure>
<div class="callout-block">
<span class="callout-icon callout-tip"></span>
<div class="callout-message">After Effects project files are called<strong> .aep</strong> files. They contain all of the effects and content you need to create After Effects 3D text effects.</div>
</div>
<p><span>To launch the project, <strong>double-click</strong> on the .aep file, and you’ll see it launch in Adobe After Effects. Keep in mind: it may take a few moments. Effects are graphics-intensive.</span></p>
<h3 id="toc-cspp-select-the-effects-to-edit"><span>2. Select the effects to edit</span></h3>
<p><span>Spend a moment getting familiar with the layout of your After Effects window. In the center, you can see a video preview. On the left, notice the <strong>Project</strong> panel is open.</span></p>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/3d_text_animation.jpg" alt="3D text animation" loading="lazy" width="870px" height="516px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/3d_text_animation.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/3d_text_animation.jpg" alt="3D text animation" loading="lazy" width="650px" height="388px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/3d_text_animation.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/3d_text_animation.jpg" alt="3D text animation" loading="lazy" width="380px" height="230px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/3d_text_animation.jpg 2x"></a>
<figcaption>When After Effects opens, you can see your 3D text After Effects template imported and ready to start editing.</figcaption>
</figure>
<p><span>In the </span><strong>Project</strong><span> panel, you can choose which 3D text animation you want to customize. The template includes several options, which are numbered. You can see these in the </span><strong>CUSTOMIZATION</strong><span> dropdown folder on the </span><strong>Project</strong><span> panel.</span></p>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/how_to_make_3d_text_in_after_effects.jpg" alt="After Effects 3D text effects: Customization folder." loading="lazy" width="870px" height="391px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/how_to_make_3d_text_in_after_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/how_to_make_3d_text_in_after_effects.jpg" alt="After Effects 3D text effects: Customization folder." loading="lazy" width="650px" height="295px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/how_to_make_3d_text_in_after_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/how_to_make_3d_text_in_after_effects.jpg" alt="After Effects 3D text effects: Customization folder." loading="lazy" width="380px" height="177px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/how_to_make_3d_text_in_after_effects.jpg 2x"></a>
<figcaption>The <strong>Customization</strong> folder contains a list of After Effects 3D text effects.</figcaption>
</figure>
<p><span>For example:</span></p>
<ul>
<li>
<span>Imagine if you want to use the green 3D text effect in After Effects. In this case, you’ll work with the customization files labeled </span><strong>03 GREEN Lower Text</strong><span> and </span><strong>03 GREEN Upper Text. </strong>
</li>
<li>
<span>For red, choose the files labeled </span><strong>06 RED.</strong>
</li>
</ul>
<p><span style="text-align:-webkit-match-parent">In short, you only have to customize the text that you want to use for your project. While you have many options here, you don’t have to use all of them for your After Effects animated text.</span></p>
<p><span>Let’s look at how to make 3D text in After Effects using the green option. From the </span><strong>Project</strong><span> panel, double-click on</span><strong> 03 GREEN Lower Text.</strong></p>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/after_effects_3d_text_effects.jpg" alt="After Effects 3D text effects" loading="lazy" width="870px" height="571px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/after_effects_3d_text_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/after_effects_3d_text_effects.jpg" alt="After Effects 3D text effects" loading="lazy" width="650px" height="428px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/after_effects_3d_text_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/after_effects_3d_text_effects.jpg" alt="After Effects 3D text effects" loading="lazy" width="380px" height="253px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/after_effects_3d_text_effects.jpg 2x"></a>
<figcaption>With your effect chosen, you’re ready to begin editing.</figcaption>
</figure>
<p>Watch what happens. In the preview section, you’ll see placeholder text appear. This is showing you that you’re editing only this specific part of the After Effects template. </p>
<h3 id="toc-g8x8-replace-the-text-with-your-own"><span>3. Replace the text with your own</span></h3>
<p><span>Now, it’s time to add your own text. Remember, the words that you see are merely placeholders. What you’ll do now is swap them out for your own words.</span></p>
<div class="callout-block">
<span class="callout-icon callout-do"></span>
<div class="callout-message"><span>Effects can be quite complex to make from scratch. That's why premium templates are great: they leave the design work up to the experts. You’re just dropping in your content.</span></div>
</div>
<p><span>Look at the bottom of After Effects. The lowermost panel is called the </span><strong>Timeline</strong><span>. On it, you’ll see stacked layers; these form the effect itself. </span></p>
<p><span>The pink line is the actual text that you’ll be editing.</span></p>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters.jpg" alt="How to make 3D text in After Effects" loading="lazy" width="870px" height="347px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters.jpg" alt="How to make 3D text in After Effects" loading="lazy" width="650px" height="262px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters.jpg" alt="How to make 3D text in After Effects" loading="lazy" width="380px" height="158px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters.jpg 2x"></a>
<figcaption>In the <strong>Timeline</strong>, you can see the text layer. It’s labeled <strong>TYPE HERE</strong>, telling you to click on it to edit.</figcaption>
</figure>
<p>Notice the layer name labeled <strong>TYPE HERE.</strong> This points you to where you’ll add your custom text. To add your own custom text, go ahead and double-click on <strong>TYPE HERE.</strong></p>
<p><span>When you do, watch the preview screen of your After Effects animated text project. You’ll see the placeholder text is now shaded. This means that it’s selected. </span></p>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters_fast.jpg" alt="How to make 3D text in After Effects: Edit placeholder text." loading="lazy" width="870px" height="503px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters_fast.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters_fast.jpg" alt="How to make 3D text in After Effects: Edit placeholder text." loading="lazy" width="650px" height="378px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters_fast.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters_fast.jpg" alt="How to make 3D text in After Effects: Edit placeholder text." loading="lazy" width="380px" height="225px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/how_to_create_3d_letters_fast.jpg 2x"></a>
<figcaption>With the text layer active, you’re ready to edit. Notice how the placeholder text is selected above.</figcaption>
</figure>
<p>Add your own text by typing it in. Over on the right, in the <strong>Properties &gt; Text </strong>group, you can make style edits.</p>
<p>For example, you can adjust the font size and alignment, and you can also <a href="https://elements.envato.com/learn/after-effects-how-to-change-solid-color" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">change the color</a> by opening the<strong> Fill</strong> color chooser.</p>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/edit_3d_text_after_effects.jpg" alt="Edit the 3D text effect in After Effects" loading="lazy" width="870px" height="482px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/edit_3d_text_after_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/edit_3d_text_after_effects.jpg" alt="Edit the 3D text effect in After Effects" loading="lazy" width="650px" height="362px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/edit_3d_text_after_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/edit_3d_text_after_effects.jpg" alt="Edit the 3D text effect in After Effects" loading="lazy" width="380px" height="216px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/edit_3d_text_after_effects.jpg 2x"></a>
<figcaption>Replace the placeholder content with your own words.</figcaption>
</figure>
<p>Just like that, you’ve created your first After Effects 3D text effects. Now, keep in mind that this template has text on multiple lines.</p>
<p>Don’t forget to add your remaining text. Here, you’ve added the lower half of the text.</p>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/change_3d_text_after_effects.jpg" alt="Change the 3D animated text in After Effects" loading="lazy" width="870px" height="448px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/change_3d_text_after_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/change_3d_text_after_effects.jpg" alt="Change the 3D animated text in After Effects" loading="lazy" width="650px" height="337px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/change_3d_text_after_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/change_3d_text_after_effects.jpg" alt="Change the 3D animated text in After Effects" loading="lazy" width="380px" height="201px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/change_3d_text_after_effects.jpg 2x"></a>
<figcaption>Repeat the earlier steps to add your remaining After Effects 3D text effects.</figcaption>
</figure>
<p>To add the upper text, move back to the <strong>Project &gt; CUSTOMIZATION </strong>folder. This time, double-click on <strong>03 GREEN Upper Text. </strong>Then, repeat the steps of selecting and replacing the text.</p>
<h3 id="toc-pe6e-render-the-finished-project"><span>4. Render the finished project</span></h3>
<p><span>Above, you learned how to make 3D text in After Effects. The final step in the process is to export the project so that it's ready to share. </span></p>
<p><span>You can use these effects as a standalone video, or you can place them inside another project. </span></p>
<p><span>Many editors use After Effects for motion graphics and cool effects. Then, they’ll move these effects into other editing apps like Premiere Pro. </span></p>
<div class="callout-block">
<span class="callout-icon callout-info"></span>
<div class="callout-message"><span><a href="https://elements.envato.com/learn/how-to-export-after-effects-to-mp4" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">Exporting in After Effects</a> is called rendering.</span></div>
</div>
<p><span>Return once more to the </span><strong>Project</strong><span> panel. Below the </span><strong>CUSTOMIZATION</strong><span> folder is the </span><strong>RENDER COMPS </strong><span>folder. </span></p>
<p><span>Think of these as pre-packaged <a href="https://elements.envato.com/learn/top-10-after-effects-templates" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">After Effects templates</a> that are ready to export. The edits you made will be incorporated automatically.</span></p>
<p><span>Recall that the effects you customized were the green designs. To render them, find the right render comp. </span></p>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/render_3d_text_after_effects.jpg" alt="Render 3D animated text in After Effects." loading="lazy" width="870px" height="493px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/render_3d_text_after_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/render_3d_text_after_effects.jpg" alt="Render 3D animated text in After Effects." loading="lazy" width="650px" height="371px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/render_3d_text_after_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/render_3d_text_after_effects.jpg" alt="Render 3D animated text in After Effects." loading="lazy" width="380px" height="220px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/render_3d_text_after_effects.jpg 2x"></a>
<figcaption>Double-click on the green render comp to prepare the 3D text animation for exporting.</figcaption>
</figure>
<p><span>Here, it’s labeled <strong>03 GREEN RENDER</strong> on the <strong>Project</strong> panel. Double-click on <strong>03 GREEN RENDER.</strong></span></p>
<p><span>Watch the </span><strong>Timeline</strong><span>. You’ll see that After Effects opens the render comp. In the video preview, you can see the finished effects that you have just built.</span></p>
<p><span>On the </span><strong>Timeline</strong><span>, click on the render comp’s layer. It’s labeled </span><strong>green 2 lines</strong><span> in this template. Clicking selects the layer. </span></p>
<p><span>With it selected, go to the </span><strong>Composition</strong><span> dropdown menu. It’s found at the very top of your After Effects screen.</span></p>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/export_3d_text_animation.jpg" alt="Export 3D text animation" loading="lazy" width="870px" height="557px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/export_3d_text_animation.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/export_3d_text_animation.jpg" alt="Export 3D text animation" loading="lazy" width="650px" height="418px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/export_3d_text_animation.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/export_3d_text_animation.jpg" alt="Export 3D text animation" loading="lazy" width="380px" height="247px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/export_3d_text_animation.jpg 2x"></a>
<figcaption>Go to <strong>Composition &gt; Add to Render Queue</strong> to stage your effects for rendering.</figcaption>
</figure>
<p><span>From the </span><strong>Composition</strong><span> menu, click </span><strong>Add to Render Queue.</strong><span> You’ll see the </span><strong>Render Queue </strong><span>open in place of the </span><strong>Timeline</strong><span>. Here, you’ll have a few choices to make. </span></p>
<ol>
<li>
<span>On the </span><strong>Render Settings</strong><span> dropdown, you can choose the quality of your output. It defaults to </span><strong>Best Settings.</strong><span> For most projects, this is a good choice. </span>
</li>
<li>
<span>Below is the </span><strong>Output Module</strong><span> dropdown. This controls the format of your export. The default setting is </span><strong>H.264 - Match Render Settings - 15 Mbps.</strong><span> Again, this is a good choice. </span>
</li>
</ol>
<p><span>What you’ll get with these settings is a high-definition MP4 video file. </span></p>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/save_after_effects_3d_text_effects.jpg" alt="Save After Effects 3D text effects" loading="lazy" width="870px" height="231px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/save_after_effects_3d_text_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/save_after_effects_3d_text_effects.jpg" alt="Save After Effects 3D text effects" loading="lazy" width="650px" height="176px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/save_after_effects_3d_text_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/save_after_effects_3d_text_effects.jpg" alt="Save After Effects 3D text effects" loading="lazy" width="380px" height="109px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/save_after_effects_3d_text_effects.jpg 2x"></a>
<figcaption>Choose your render settings, and then click <strong>Render</strong> to start the rendering process.</figcaption>
</figure>
<p><span>Finally, click on the </span><strong>Output To</strong><span> menu on the right. Here, browse to a folder on your computer where you want the finished file to be saved. You can also choose a custom file name by typing it in. </span></p>
<p><span>Click </span><strong>Save</strong><span> when you’ve made these selections. </span></p>
<p><span>Now, it’s time to <a href="https://photography.tutsplus.com/articles/understanding-3d-rendering-a-beginners-guide--cms-109097" target="_self">render the 3D</a> text animation. To do that, click </span><strong>Render</strong><span> in the lower right corner of After Effects. When you do, After Effects will get to work rendering your project.</span></p>
<p><span>You can keep track of the progress with the <strong>Current Render </strong>progress bar. </span></p>
<div class="callout-block">
<span class="callout-icon callout-warn"></span>
<div class="callout-message"><span>Again, these projects are very graphics-intensive. It may take a few minutes to complete the <a href="https://elements.envato.com/learn/how-to-render-video-in-after-effects-faster" target="_self" data-action="click-&gt;ga-analytics#sendElementsClickEvent">After Effects rendering</a>. </span></div>
</div>
<figure class="post_image"><a href="https://elements.envato.com/3d-text-openers-V79RJPB" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=850/uploads/users/151/posts/108581/image-upload/export_after_effects_3d_text_effects.jpg" alt="Export After Effects 3D text effects" loading="lazy" width="870px" height="233px" class="resized-image resized-image-desktop" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1700/uploads/users/151/posts/108581/image-upload/export_after_effects_3d_text_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/151/posts/108581/image-upload/export_after_effects_3d_text_effects.jpg" alt="Export After Effects 3D text effects" loading="lazy" width="650px" height="178px" class="resized-image resized-image-tablet" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/151/posts/108581/image-upload/export_after_effects_3d_text_effects.jpg 2x"><img src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/151/posts/108581/image-upload/export_after_effects_3d_text_effects.jpg" alt="Export After Effects 3D text effects" loading="lazy" width="380px" height="110px" class="resized-image resized-image-mobile" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/151/posts/108581/image-upload/export_after_effects_3d_text_effects.jpg 2x"></a>
<figcaption>Your finished After Effects 3D text effects will be rendered and ready to share.</figcaption>
</figure>
<p>After Effects will notify you when the rendering is complete. Then, you can open up your exported MP4 effects.</p>
<p><span>As you can see, it’s easy to build After Effects 3D text effects. That’s all thanks to the power of premium <a href="https://photography.tutsplus.com/tutorials/10-after-effects-3d-text-animation-templates-for-2018--cms-30707" target="_self">3D text animation templates</a>.</span></p>
<h2 id="toc-2cg7-build-your-own-after-effects-3d-text-effects-today"><span>Build your own After Effects 3D text effects today</span></h2>
<p><span>Now you know how to make 3D text in After Effects. It’s a remarkably easy process:</span><span> simply choose your favorite template from Envato. Then, swap out the placeholder text with your own words. <em>Voilà!</em></span></p>
<p>Envato has a powerful offer: unlimited downloads. For a flat monthly rate, you can get and use as many creative assets as you want. Enjoy fonts, 3D text animation templates, music, and so much more!</p>
</div><div data-content-block-type="MultiElementItem" class="content-block content-block-multielementitem relative" data-controller="multi-element-item-gallery" id="ilrc">
<div class="flex flex-row items-center div-container" data-multi-element-item-gallery-target="item">
<a href="https://elements.envato.com/sales-banner-JXDY9RV" data-multi-element-item-gallery-target="linkImage" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://elements-resized.envatousercontent.com/envato-dam-assets-production/EVA/TRX/75/f4/2f/23/24/v1_E10/E10DUB30.png?w=1200&amp;h=800&amp;cf_fit=crop&amp;q=85&amp;format=jpeg&amp;s=dd4f843cc61bf02fcb68535e2996a11854555bb036615b7dd207dea985ec9347" alt="Sales Banner" data-multi-element-item-gallery-target="image" class="w-20 h-20 object-cover" loading="lazy"></a><a href="https://elements.envato.com/sales-banner-JXDY9RV" data-multi-element-item-gallery-target="titleLink" class="w-full flex text-left underline div-container" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><div class="w-full"><div>Sales Banner</div></div></a>
</div>
<div class="flex flex-row items-center div-container" data-multi-element-item-gallery-target="item">
<a href="https://elements.envato.com/pop-3d-title-2NFHJZT" data-multi-element-item-gallery-target="linkImage" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://elements-resized.envatousercontent.com/elements-video-cover-images/files/427938074/imagepreview.jpg?w=1200&amp;h=800&amp;cf_fit=crop&amp;q=85&amp;format=jpeg&amp;s=f4fc5d15272e6c04aee3edc87c8d64d51a2290e65e95339d989ffc639100c826" alt="Pop 3D Title" data-multi-element-item-gallery-target="image" class="w-20 h-20 object-cover" loading="lazy"></a><a href="https://elements.envato.com/pop-3d-title-2NFHJZT" data-multi-element-item-gallery-target="titleLink" class="w-full flex text-left underline div-container" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><div class="w-full"><div>Pop 3D Title</div></div></a>
</div>
<div class="flex flex-row items-center div-container" data-multi-element-item-gallery-target="item">
<a href="https://elements.envato.com/animated-blob-letters-RJU8NV2" data-multi-element-item-gallery-target="linkImage" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><img src="https://elements-resized.envatousercontent.com/elements-video-cover-images/files/453790137/Preview%20Image%20AE.jpg?w=1200&amp;h=800&amp;cf_fit=crop&amp;q=85&amp;format=jpeg&amp;s=34aaa835f540ea92f688297f48668ac82e038d56fc2d682dda00b2ee08c82f61" alt="Animated Blob Letters" data-multi-element-item-gallery-target="image" class="w-20 h-20 object-cover" loading="lazy"></a><a href="https://elements.envato.com/animated-blob-letters-RJU8NV2" data-multi-element-item-gallery-target="titleLink" class="w-full flex text-left underline div-container" data-action="click-&gt;ga-analytics#sendElementsClickEvent"><div class="w-full"><div>Animated Blob Letters</div></div></a>
</div>
</div><div data-content-block-type="Wysi" class="content-block content-block-wysi" id="ix9k">
<p><span>And if you need any help finding the perfect project content, try out Envato's <a href="https://elements.envato.com/assistant" target="_blank" rel="noopener" data-action="click-&gt;ga-analytics#sendElementsClickEvent">AI-Search assistant</a>. Simply describe your project needs in just a few words. Save time and get everything you need.</span></p>
<h2 id="toc-ec8i-keep-improving-your-after-effects-skills"><span>Keep improving your After Effects skills</span></h2>
<p><span>If you're more into <a href="https://www.youtube.com/@envatotuts" target="_self">video tutorials</a>, check out the Envato Tuts+ YouTube channel. You can also learn how to make 3D text in After Effects right there:</span></p>
<figure class="embedded-video" data-video-embed="true" data-original-url="https://www.youtube.com/watch?v=ElF6V_vLf-g&amp;t=0">
<iframe src="https://www.youtube.com/embed/ElF6V_vLf-g?rel=0&amp;start=0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen webkitallowfullscreen="webkitallowfullscreen" mozallowfullscreen="mozallowfullscreen" loading="lazy" style="border-radius: 15px;"></iframe>
</figure>
<p><span>3D text After Effects designs are sure to amaze your audience, but they’re only one of countless cool effects that you can create. </span></p>
<p><span>Here are several top tutorials to help expand your After Effects skills. Check them out today to become a better editor:</span></p>
<ul class="roundup-block__contents posts--half-width roundup-block--list">
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://photography.tutsplus.com/tutorials/how-to-make-animated-text-after-effects--cms-109089"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/109089/preview_image/mistake_ae.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/30/posts/109089/preview_image/mistake_ae.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/109089/preview_image/mistake_ae.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/109089/preview_image/mistake_ae.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/109089/preview_image/mistake_ae.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/109089/preview_image/mistake_ae.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">How to make an animated text effect in After Effects</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/33/profiles/21377/profileImage/Pixrate_logo.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/33/profiles/21377/profileImage/Pixrate_logo.png 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/33/profiles/21377/profileImage/Pixrate_logo.png" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/33/profiles/21377/profileImage/Pixrate_logo.png 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/33/profiles/21377/profileImage/Pixrate_logo.png" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/33/profiles/21377/profileImage/Pixrate_logo.png 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Mohamed Elaasry</div>
<div class="roundup-block__published-date">23 Jan 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://photography.tutsplus.com/tutorials/stretchy-text-after-effects--cms-109146"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2852/posts/109146/preview_image/Final_Product7.png" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/2852/posts/109146/preview_image/Final_Product7.png 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2852/posts/109146/preview_image/Final_Product7.png" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2852/posts/109146/preview_image/Final_Product7.png 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2852/posts/109146/preview_image/Final_Product7.png" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2852/posts/109146/preview_image/Final_Product7.png 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">On-trend stretchy text with After Effects</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/21379/profileImage/dm.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/21379/profileImage/dm.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/21379/profileImage/dm.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/21379/profileImage/dm.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/21379/profileImage/dm.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/21379/profileImage/dm.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Dylan Mercer</div>
<div class="roundup-block__published-date">24 Mar 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://photography.tutsplus.com/tutorials/stretchy-variable-fonts-in-after-effects-thanks-to-expressions--cms-109160"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2852/posts/109160/preview_image/varyFonts_pic_000_Thumbnail02.png" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/2852/posts/109160/preview_image/varyFonts_pic_000_Thumbnail02.png 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/2852/posts/109160/preview_image/varyFonts_pic_000_Thumbnail02.png" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/2852/posts/109160/preview_image/varyFonts_pic_000_Thumbnail02.png 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2852/posts/109160/preview_image/varyFonts_pic_000_Thumbnail02.png" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2852/posts/109160/preview_image/varyFonts_pic_000_Thumbnail02.png 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">Stretchy variable fonts in After Effects (thanks to expressions)</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/21379/profileImage/dm.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/21379/profileImage/dm.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/30/profiles/21379/profileImage/dm.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/profiles/21379/profileImage/dm.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/profiles/21379/profileImage/dm.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/profiles/21379/profileImage/dm.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Dylan Mercer</div>
<div class="roundup-block__published-date">16 Apr 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://photography.tutsplus.com/tutorials/how-to-create-a-saul-bass-style-title-animation-in-after-effects--cms-109184"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/109184/preview_image/aoam.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/30/posts/109184/preview_image/aoam.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/109184/preview_image/aoam.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/109184/preview_image/aoam.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/109184/preview_image/aoam.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/109184/preview_image/aoam.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">How to create a Saul Bass style title animation in After Effects</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/591/profiles/18402/profileImage/Profile400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/591/profiles/18402/profileImage/Profile400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/591/profiles/18402/profileImage/Profile400.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/591/profiles/18402/profileImage/Profile400.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/591/profiles/18402/profileImage/Profile400.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/591/profiles/18402/profileImage/Profile400.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Charles Yeager</div>
<div class="roundup-block__published-date">20 May 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://photography.tutsplus.com/articles/editing-questions-beginners-always-ask--cms-109185"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/30/posts/109185/preview_image/thumb_tips.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/30/posts/109185/preview_image/thumb_tips.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/30/posts/109185/preview_image/thumb_tips.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/30/posts/109185/preview_image/thumb_tips.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/30/posts/109185/preview_image/thumb_tips.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/30/posts/109185/preview_image/thumb_tips.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">10 editing questions beginners always ask (answered by a pro)</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2800/profiles/21324/profileImage/TG_Tuts.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2800/profiles/21324/profileImage/TG_Tuts.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/2800/profiles/21324/profileImage/TG_Tuts.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/2800/profiles/21324/profileImage/TG_Tuts.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/2800/profiles/21324/profileImage/TG_Tuts.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/2800/profiles/21324/profileImage/TG_Tuts.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Tom Graham</div>
<div class="roundup-block__published-date">22 May 2025</div>
</div>
</div>
</div>
</div></a></li>
<li class="roundup-block__content"><a class="roundup-block__content-link" href="https://photography.tutsplus.com/tutorials/after-effects-how-to-make-a-2d-photo-into-a-3d-video--cms-108838"><div class="roundup-block__content-container">
<div class="roundup-block__preview">
<img class="roundup-block__preview-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/403/posts/108838/preview_image/3d_photo_effect_preview.jpg" alt="" loading="lazy" width="820px" height="574px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1600/uploads/users/403/posts/108838/preview_image/3d_photo_effect_preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=630/uploads/users/403/posts/108838/preview_image/3d_photo_effect_preview.jpg" alt="" loading="lazy" width="650px" height="456px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=1260/uploads/users/403/posts/108838/preview_image/3d_photo_effect_preview.jpg 2x"><img class="roundup-block__preview-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/posts/108838/preview_image/3d_photo_effect_preview.jpg" alt="" loading="lazy" width="380px" height="269px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/posts/108838/preview_image/3d_photo_effect_preview.jpg 2x">
</div>
<div class="roundup-block__content-meta">
<div class="roundup-block__content-title">After Effects: How to Make a 2D Photo Into a 3D Video</div>
<div class="roundup-block__author-info">
<div class="roundup-block__author-profile-image">
<img class="roundup-block__author-image resized-image resized-image-desktop" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-tablet" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=400/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="420px" height="420px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=800/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x"><img class="roundup-block__author-image resized-image resized-image-mobile" src="https://cms-assets.tutsplus.com/cdn-cgi/image/width=360/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg" alt="" loading="lazy" width="380px" height="380px" srcset="https://cms-assets.tutsplus.com/cdn-cgi/image/width=720/uploads/users/403/profiles/18836/profileImage/jon_lam.jpg 2x">
</div>
<div class="roundup-block__author-meta">
<div class="roundup-block__author-name">Jonathan Lam</div>
<div class="roundup-block__published-date">06 Aug 2024</div>
</div>
</div>
</div>
</div></a></li>
</ul>
</div><div class="mediafed_ad"><img border="0" height="1" src="http://audio.tutsplus.com.feedsportal.com/c/35227/f/669438/s/9743/sc/4/mf.gif" width="1" /><a href="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/9743/a2.htm"><img border="0" src="http://da.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/9743/a2.img" /></a><img border="0" height="1" src="http://pi.feedsportal.com/r/186529796139/u/407/f/669438/c/35227/s/9743/a2t.img" width="1" /></div></content>
<published>2025-06-30 13:03:00 UTC</published>
<updated>2025-06-30 13:03:00 UTC</updated>
<author>
<name>Andrew Childress</name>
</author>
</entry>
</feed>