back to top

How to Use Content Aware Fill in Photoshop

A- A+

Subscribe Below to Download the Article Immediately

You can also select your interests for free access to our premium training:

Your privacy is safe. I will never share your information.

I use Lightroom for a lot of my photography post-processing. But one of the reasons I roundtrip images into Photoshop is to use Content-Aware Fill tools. Lightroom has a Spot Removal tool, but Photoshop is still the leader in changing pixels.

two sleek computer screens on a desk
Photo by Tranmautritam from Pexels

What is Content-Aware Fill?

Photoshop has many tools to move or remove unwanted objects from a photograph. With Content-Aware Fill, I tell Photoshop what I want to be moved or removed, and the software does the rest. Photoshop selects pixels around the object that might work in the space.

An advanced algorithm powers Content-Aware Fill in Photoshop. With every version of Photoshop, these tools become more powerful. Some of the tools I’m going to show you are only available in the newest versions of Photoshop. If you haven’t upgraded to Photoshop 2020, now’s the time to do it!

First, I’ll show you the Content-Aware Fill option within the Patch tool. Then I’ll move to the Content-Aware Move tool. Finally, I’ll show you the newest addition, the Content-Aware Fill workspace. This workspace was introduced in the CC 2019 version of Photoshop.

When to Use Content-Aware Fill

There are a lot of Photoshop tools and techniques to move or remove objects. The difficulty is learning which tool will work on the photo you have. The Spot Healing Brush works well to remove spots or small objects. I focused on this tool for removing blemishes in a portrait in my article on “How to Smooth Skin in Photoshop”.

Content-Aware Fill in Photoshop is useful when removing objects from a scene. When colors and textures are consistent, Photoshop does a good job replacing pixels.

In more complex images, Photoshop might struggle and create odd effects in your image. The Patch tool allows you to select replacement pixels. The new Content-Aware Fill workspace was designed for a higher level of control. The workspace allows you a lot of flexibility in choosing the replacement pixels. Compare the before and after image.

Moving objects to a different part of an image, or a different image, becomes easy with the Content-Aware Move tool. The selected object is moved and integrated into the image. Photoshop then uses Content-Aware Fill to patch over the hole left behind.

As with any tutorial, it’s best to follow along with an image of your own. Find an image to work with, open the latest version of Photoshop and let’s have some fun moving and removing!

How to Use Content-Aware Fill

Locating Content-Aware Fill Tools

Let start by locating the Content-Aware Fill tools we’ll be using. The Patch tool and the Content-Aware Move tool are located on the toolbar. The Patch tool icon is a rectangle with lines bisecting each edge. The Content-Aware Move tool is a pair of crossed arrows in the shape of an “X”.

Content Aware fill tool icons on the toolbar.
Content-Aware fill tool icons on the toolbar.

If your toolbar isn’t visible, go to the Windows dropdown menu and place a tick mark next to “Tools”. If I mention a Photoshop tool that you can’t see on your toolbar, go to Edit>Toolbar. Drag hidden tools from the right column to the left column. You can group tools in a way that makes sense to you.

When you select the Patch tool, choose Content-Aware Fill in the Options bar. Both the Patch tool and the Content-Aware Move tools also have “structure” and “color” settings. I’ll talk about these more later in the article.

Patch tool Options bar.
Patch tool Options bar.

To open the Content-Aware Fill workspace first make a selection around an object. Then go to Edit>Content-Aware Fill... If the Content-Aware Fill option is greyed out, use a selection tool like the lasso (keyboard shortcut “L”) to highlight your content. This should activate the command.

Let’s start with learning how to use the Content-Aware Fill option in the Patch tool.

Content-Aware Patch Tool

One of the first tools I reach for when removing something from an image is the Patch tool.

Step 1 – Selection

First, I create a copy of my image in a new layer. Creating a new layer with each change is a good habit to get into. This ensures you can always go back to your original image. If you haven’t created a duplicate layer before, go to Layers>Duplicate Layer (Ctrl or ⌘J).

On this new layer, I choose the Patch tool (hotkey J) and draw a loose lasso around the object I want to remove.

Screenshot of Photoshop workspace showing lasso around person to be removed.
Screenshot of Photoshop workspace showing lasso around person to be removed.

Check to make sure the Content-Aware option is selected in the Options bar.

Step 2 – Drag to Replace Pixels

Grab the selected area and drag it to a sampling area. I try to match up any obvious lines if I can.

When I release, Photoshop takes this suggestion and uses Content-Aware Fill to fit the new pixels into the space.

If I don’t like the result, I undo the change. Select Edit>Undo Patch Selection (Ctrl or ⌘Z). Then drag the patch to a different place.Using Photoshop content aware fill

I have two more fill settings in the Patch option bar: structure and color. With structure, I’m telling Photoshop how closely to adhere to the shapes in the new content. 7 means be faithful to the shapes. 0 means loosely interpret the shapes.

For color, I’m selecting how much color blending I want Photoshop to do. 10 is the maximum. 0 means that I don’t want any color blending.

Let me show you the results when I use different combinations of structure and color.

Comparing Patch tool results with varying levels of structure and color.
Comparing Patch tool results with varying levels of structure and color.

The patch isn’t that much different in this image. Some are more blurred. Others have a harder edge around the patch.

The Patch tool works best on less complicated images like this. For more complicated images, I’ve found that patching the object in smaller sections works better.

Content-Aware Move Tool

Content-Aware Fill is useful for removing objects, but also for moving them. I moved a few people around in this photo taken in Varanasi, India to add more space. Compare the before and after image.

Step 1 – Selection

Create a copy of the image in a new layer by choosing the Layers drop-down menu and Duplicate Layer (Ctrl or ⌘J).

Select the layer and click the Content-Aware Move tool. Draw a loose lasso around the object you want to move.

Step 2 – Drag to Move Pixels

Grab the selected area and drag it to the place you wish to move it.

When you release, a transform box will appear around your selection. This allows you to rotate the content to better fit into the new space.

Screenshot of Photoshop showing transform box created by Content Aware Move tool.
Screenshot of Photoshop showing transform box created by Content-Aware Move tool.

Click Return or the checkmark in the Option bar to accept any changes. Photoshop moves selected pixels into the space AND patches the original space.

As with the Patch tool, I have two fill settings: structure and color. They work similarly in this tool to patch the hole left by moving the object.

Content-Aware Fill Workspace

The Patch tool works fine for simple edits, but the Content-Aware Fill workspace gives me more control.

The previous Content-Aware Fill tool is still available Edit>Fill>Content-Aware Fill. This will open the fill panel and you can select Content-Aware. But this tool has by and large been replaced by the workspace.

Let me show you the Content-Aware Fill workspace. I’m going to use this tool to remove a highway sign from this image.

A small stone tower in a lake
I plan to remove the selected highway sign from my image using Content-Aware Fill workspace.

Step 1 – Selection

I start by selecting the object I want to remove with the lasso tool. Then I select Edit>Content-Aware Fill... This opens the workspace.

There are three sections to this workspace.

Content Aware Fill workspace consists of three panels.
Content-Aware Fill workspace consists of three panels.

The middle panel is my image. Photoshop has already applied a preview of the Content-Aware Fill. It’s not replacing the sign with the right information. I’ll show you how to change this in a minute.

The far left panel, covered by a green overlay, highlights Photoshop’s sampling area. Refining the sampling area will give me better results.

I also have a toolbar on the far left that includes a sampling brush tool, a lasso tool, a hand tool, and a zoom tool.

The far-right panel gives me additional options.

Notice in the Preview panel that Photoshop is replacing the sign with part of the lighthouse’s roof. I just want trees and sky in the background. Here’s how to change this.

Step 2 – Refine Sampling Area

Using the sampling brush tool set to minus in the top Option bar, I erase the green overlay in the sampling area. I don’t want Photoshop to use these parts of the image as replacement pixels.

Notice in the video of my screen that Photoshop updates the replacement pixels as I paint.

If I remove too much, I switch the sampling brush tool to the plus sign in the Option bar.

 

By default, Photoshop automatically selects the sampling area. But I can control the choice in the righthand panel. I select Rectangle if I only want Photoshop to choose from the pixels around my selection. I select Custom to completely control the sampling area. From there, I use the sampling brush tool set to plus and paint the sampling area.

In a more complex image, I may want to increase the color adaptation. I have a choice of none, default, high and very high.

If my selection is on an angle, I may want to apply a rotation adaptation. I have a choice of none, low, medium, high and full. I also have the option to scale the image or mirror.

When I change these settings, Photoshop warns me that the results may be unexpected. If I don’t like the result, I simply undo it with Edit>Undo (Ctrl or ⌘Z).

When I’m happy with changes in the Preview panel, I click OK. By default, the selected area with the Content-Aware Fill changes are saved on a new layer.

After a little more cleanup work, here is my final image. I find that Content-Aware Fill in Photoshop sometimes removes textures that I want to keep. I use the Clone Stamp tool to replace the texture.A little stone tower in a lake

Conclusion

Photoshop fill tools help you move or remove objects in your images. Content-Aware Fill uses AI technology to select and blend the best replacement pixels.

The Patch tool allows me to select an object and choose pixels to put in its place. The Content-Aware Move tool lets me move a selected object, integrates the object into its new home and patches the space left behind. The Content-Aware Fill workspace lets me control the sampling area. This Photoshop fill tool is much more subtle and sensitive than the Patch tool.

The Content-Aware technology in Photoshop has improved a lot over the years, but it’s not foolproof. You may have some cleanup work to do after you move or remove an object.

You can remove objects and people from busy backgrounds. No one will ever know that you did.

If you want to become an editing expert, try our Effortless Editing with Lightroom course today! 

Show Comments (0)
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]