There are thousands of concealers on the market (we rounded up our favorites for dry skin). However, when it comes to acne concealers, too many of them lack pigment or staying power. Lucky for you, we’ve been testing so many acne treatments like pimple patches and, of course, acne concealers. Plus, after speaking with a few experts, we wrote down their favorites, too.
Finish: Matte | Coverage: Full coverage | Shades: 9
A husband-wife duo — one a dermatologist, the other a makeup artist — teamed up to create the company Dermablend. Since then, it’s become a favorite on movie sets, where makeup artists use it to conceal actors’ tattoos. The coverage is so strong that it can cover an entire body — so don’t worry, it can handle a pimple as well. It’s one of the highest rated concealers on Ulta.
Another viral concealer known for its hydrating qualities and affordable price, this one offers great coverage that makes concealing acne pretty easy, but pro tip: Use a brush instead of fingers to blend it in and avoid creasing.
The Shape Tape concealer has gone through phases of being in everyone’s makeup bag to being on the back burner, but there’s no denying that it’s full coverage is good for concealing acne. With 35 shades, its a perfect concealer for everyone and is made to be creaseproof for long wear. Plus it comes in a travel size, so you can test it out before spending the $31.
While not technically a concealer, this color-correcting cream works wonders on the skin and creates a base that you could wear without any concealer. After going viral on TikTok, it seemed as if everyone had their hands on the light-green cream and quickly learned a little goes a long way with this product.
Coming in at just under $10, this concealer recommended by Gray is an everythingproof full-coverage concealer. Gray notes that it’s long-lasting, lightweight, and full-coverage, which is ideal for when you really need to conceal.
Finish: Natural | Coverage: Medium coverage | Shades: 30
The brand’s foundation has quickly become a fan favorite, but the concealer is just as good, and even better for acne. The non-comedogenic concealer won’t clog pores. Plus, the buildable formula has a natural finish so it will easily conceal blemishes and textured skin without highlighting the area.
Saie’s formulas are ideal to achieve a radiant, glowing finish. So, the brand’s latest concealer? It’s no different. With niacinamide, the lightweight and non-comedogenic formula conceals and helps smooth skin over time.
One of the perks of Tower 28’s formulas is that they’re safe for sensitive skin, and the brand’s concealer is no exception. The buildable Swipe All-Over concealer is hydrating and soothing with a natural finish. It also won’t clog pores, so you can conceal before, during, and after the healing process.
Finish: Waterproof matte | Coverage: Full coverage | Shades: 25
This drugstore concealer is one of Avendaño’s favorites and is creamy, waterproof, and fade resistant for all-day coverage. It comes in 25 shades and features an extra-large applicator tip for easy use.
Finish: Shimmer and matte | Coverage: Multi-purpose | Shades: 2
Reddit agrees: Use an eye-shadow primer — not a concealer — as the first step to covering your pimple. Urban Decay’s Primer Potion is so popular on the Reddit beauty boards that it even has an acronym: UDPP. Dot a tiny bit on the blemish and let it set to hide inflammation and redness and make concealer stick better.
Finish: Natural | Coverage: Full coverage | Shades: 14
Once former deauty director Kathleen Hou got a little older and could afford something more expensive than tinted Clearasil, she found this, and it served her well for nearly all of high school. There are 22 shades (though they don’t offer as many darker shades as we would like), and the thin-but-tacky texture is really effective at covering up everything from mosquito bites to extra-bratty zits. Tip: If you’re going to wear it all day, set it with a bit of powder so that it doesn’t become oily.
Finish: Natural | Coverage: Full coverage | Shades: 6
Makeup artists know that to really cover a zit, you need more than one color. That’s why this two-shade compact, which contains a color corrector and concealer, is so useful. We’ve watched professional makeup artists masterly blend the two sides with a brush until they create a custom shade so perfect that it can disguise even the largest cystic pimples. It has a dry texture that molds to the skin, making it particularly great for oily skin types. Learning how to create the best shade for your own skin requires some trial and error, but once you master it, your cover-up will stay put.
Finish: Natural | Coverage: Full coverage | Shades: 16
How do you cover a zit that, as Mindy Kaling once said, “ha[s] roots that seemed to extend into [your] brain”? You need a truly sticky concealer like this one, a heavy paste that feels like spackle — in a good way. Use only the tiniest, tiniest pinprick, even if you’re trying to hide acne scars or a massive pimple. It comes in 15 colors, and you can even get a shade custom-made for you. To me, this is perfect.
Finish: Matte | Coverage: Full coverage | Shades: 10
The texture of this is somewhere between a paste and a liquid, so a few pats with a finger or a brush make it disappear into the skin. It’s highly pigmented, so it can work to cover smaller blemishes, dark eye-circles, and — with the help of a color corrector — bigger zits.
Finish: Luminous | Coverage: Medium coverage | Shades: 22
Another concealer that promises to stay in place and really does. A multi-purpose concealer, you can use this for under-eye circles, redness, and lighter blemishes. It comes in nine shades and purportedly lasts for 15 hours.
Finish: Matte | Coverage: Full coverage | Shades: 26
One of Avendaño’s favorite concealers, and one that is applauded all over TikTok as being “that concealer,” comes in 30 luxurious shades for the ultimate coverage. It’s oil free and gives the skin a soft-matte finish.
If you’re someone who prefers makeup that can do it all, this complexion stick from Merit will be your best friend. Both a foundation and a concealer, the creamy stick is medium coverage for a natural look but buildable for full-coverage, especially since it contains daffodil extract to diminish the look of dark spots and pigmentation.
For makeup artist Allan Avendaño, the first step is prepping the skin. “I usually like to bring down redness with an ice roller or face-cooling globes,” he says. If your face is still too red, Avendaño recommends a color corrector. Then, depending on the type of blemish, he uses two types of concealers: “If it’s flat, you can cover with a more emollient concealer that feels and looks like skin but covers any blemishes without feeling cakey. If it’s raised, use a more dense and drier concealer because it tends to stay put and has a matte finish, so it doesn’t amplify the raised texture.”
What’s the best way to apply concealer for acne?
“The best method to apply concealer for acne is to use a smaller concealer brush,” makeup artist Emily Gray explains. “This allows you more control over the placement of the product. I also believe that you get more full coverage using a brush, which is vital for covering acne.” This spot-concealing technique is ideal before and after applying foundation as long as you have a concealer close to your skin tone.
Is there ever a time where it’s better not to cover acne with makeup?
Is there a time when you really should let that bad boy breathe? Dr. Jeannette Graf, a board-certified dermatologist and assistant clinical professor of dermatology at Mount Sinai School of Medicine, explains that if the acne in question is open or weeping, applying concealer may make it worse. “It can further clog pores and make your skin more irritated,” she says. “If you’re using certain acne medications, such as topical retinoids, sometimes it’s important to avoid using makeup in the affected areas as it can cause further irritation.”
Our Experts:
Dr. Jeannette Graf, board-certified dermatologist and assistant clinical professor of dermatology at Mt Sinai School of Medicine
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(135),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"4":4,"12":12,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(406),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"406":406,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]