TikTok Beauty Products & Style Hacks That Went Viral In 2021
Narcity may receive a small commission if you purchase something we recommend in this article, which was created by the Narcity Shop team. Items are in stock and prices are confirmed at the time of publishing, but they can change at any time.
The beauty of TikTok is that it can help us determine whether products really work before we go ahead and splurge on them. Seeing results from real people that try cleaning products and makeup and offer mind-blowing shopping hacks is the reason we just can’t stop scrolling.
Here are some beauty products and hacks that blew up on the platform.
Peter Thomas Roth Instant FIRMx Eye Temporary Eye Tightener
Price: $38
Details: This real-time video of this TikTok user’s undereye bags literally disappearing after using this product got over 20 million views! It’s sold out on Sephora, but you can still buy it directly from the brand’s website.
Maybelline New York Lash Sensational Sky High Mascara
@jessica.eid_ love this mascara @maybelline #skyhighmascara #maybellinepartner #ad #hair #fy #maybelline #lashes
Price: $8.08 ($11.99)
Details: Mascara is one of those beauty products that you don’t need to splurge on to get good results, and this video proves it. The wand is thin and flexible, which will help you grab onto every last lash.
$8.08 On AMAZON CANADA
REFY Brow Sculpt Shape And Hold Gel With Lamination Effect
@glamzilla OKKKKKK!! Now I want to buy everything from this line 👀 #makeup #makeupartist #makeupreview #eyebrowtutorial
Price: $31
Details: The laminated brow trend isn’t going away anytime soon and brands are perfecting their products to achieve this style. This product is a wax-gel hybrid and comes with two brush heads to help you really refine your look.
Kopari Moisturizing Lip Glossy
@mynamesgiorgi OKAY BILLIE PUTTING US ON!! 🖤 @koparibeauty @billieeilish
Price: $16.38
Details: Billie Eilish is often spotted with minimal or no makeup at all, but one product she does use, according to this TikTok user, is the Kopari lip gloss. It’s extremely nourishing, with ingredients like coconut oil and vitamin E.
Caudalie Instant Detox Mask
@mireyarios Wow this mask! #facemask #pores #porestrip #clearpore #poresucker #poremask #caudaliedetox #caudalie #detoxmask #clearskin #beautytipsbymireya
Price: $48
Details: You can actually see the nourishing clay mask sucking the sebum out of your pores — that’s how well it works! With grapeseed oil and caffeine, it’s the perfect pick-me-up for when your skin is feeling dull.
Freck Beauty The Original Freckle
@jenn_aedo Why use that freckled filter when there’s @freckbeauty ? #frecklelove #freckbeauty #freckletutorial #beautyover40 #sephora #trysomethingdifferent
Price: $29
Details: If you love the look of freckles but don’t want the sun damage, this unique product is made just for that. The teeny-tiny brush applies more precisely than eyeliner and the liquid formula is like a stamp that’ll sink into your skin.
L’Oreal Paris Infallible 24h Fresh Wear Foundation In A Powder
@rocio.roses 😦New viral makeup product😦 #makeuptok #makeup #beauty #lorealparis #makeuptiktok #notsponsored #makeupproduct #makeupreview
Price: $19.99
Details: This powder foundation will get your skin looking airbrushed in just a couple of swipes. It won’t budge and is full-coverage and matte. Hot tip: apply with a foundation brush for a lighter finish!
$19.99 On AMAZON CANADA
Charlotte Tilbury Beauty Highlighter Wand
@kirsty.belle Okay but she might be onto something can’t lie #Coming2America #foryou #OurHouse2021 #madisonbeer #madisonbeermakeup
Price: $50
Details: The internet went crazy over Madison Beer’s makeup routine, where she reveals that her glowing skin is due, in part, to some Charlotte Tilbury products, like this highlighter wand.
Elf Putty Blush
@janjan_1995 i have the whole collection now🥰 other four shades are posted in part one #elf #blush #mediumskin #elfputtyblush #ultabeauty
Price: $7.99
Details: This inexpensive blush will help you achieve that sunkissed look that everyone is loving right now without looking cakey. It’s buildable and formulated with argan oil and vitamin E, so it won’t dry out your skin.
$7.99 On AMAZON CANADA
Scrunchie Hack For Volume
@the.bridalist #ponytailhack #scrunchiehack #volumehack #hairhack #fyp
Price: $8.99
Details: If your ponytail is looking flat then this scrunchie hack can give you the volume you’re looking for. All you have to do is pull half your hair through when making the last loop of your ponytail and let the top section of your hair rest on top.
$8.99 On AMAZON CANADA
Dyson Airwrap Hack
@mattloveshair wait wait wait wait wait- THATS how u use this ?! 🤯🤯 #dysonhair #hairgadget #viralhair
Price: $699.99
Details: It blew our minds to learn that this was a way to use the Dyson Airwrap with the blowdryer attachment. You can dry sections with this hack or even create a ’90s-style flip at the end.
$699.99 On DYSON CANADA
window.REBELMOUSE_LOWEST_TASKS_QUEUE.push(function()
let next_url = window.location.href.split("next_url=")[1];
let createAppleButtons = document.querySelectorAll("#createApple"); let createGoogleButtons = document.querySelectorAll("#createGoogle"); let createFBButtons = document.querySelectorAll("#createFacebook");
for ( let button of createAppleButtons) button.addEventListener("click", () => redirect("/core/users/login/apple/", next_url) );
for (let button of createGoogleButtons) button.addEventListener("click", () => redirect("/core/users/login/googleplus/", next_url) );
for (let button of createFBButtons) button.addEventListener("click", () => redirect("/core/users/login/facebook/", next_url) );
function redirect (url, next) window.location.href = `$url?next_url=$next`
function frenchUrl(url) if(url) return url.includes("https://www.narcity.com/fr/");
else return false;
var monitorChekFrenchCheckbox = makeMonitor(function () return document.querySelector("label.authentication--field-IsFrenchProfile"); ,function (res) let fr = frenchUrl(next_url); let input = res.querySelector("input"); if (fr && !input.checked) input.checked = true;
);
monitorChekFrenchCheckbox.start();
);
window.REBELMOUSE_LOWEST_TASKS_QUEUE.push(function()
!function(p,r,e,s,b,d)(s=p.pbq=function()s.exe?s.exe.apply(s,arguments):s.queue.push(arguments);,s.version='1.0',s.queue=[],b=r.createElement(e),b.async=!0,b.src="https://sr.studiostack.com/v3/services",d=r.getElementsByTagName(e)[0],d.parentNode.insertBefore(b,d))(window,document,'script'); pbq('init', '250789');
);
window.REBELMOUSE_LOWEST_TASKS_QUEUE.push(function()
let editProfile = document.querySelector('.gdpr-cookie-content'); let wrapper = document.querySelector('.rm-gdpr');
editProfile.addEventListener("click", function () wrapper.classList.add('hidden') )
);
window.REBELMOUSE_LOWEST_TASKS_QUEUE.push(function()
const supportPageOffset = window.pageXOffset !== undefined;
let previousScrollPosition = 0;
const isScrollingDown = () => let scrolledPosition = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop; let isScrollDown;
if (scrolledPosition > previousScrollPosition) isScrollDown = true; else isScrollDown = false;
previousScrollPosition = scrolledPosition; return isScrollDown; ;
const handleNavScroll = () => if(document.querySelector(".rumble-sticky--show")) if (isScrollingDown() ) document.querySelector(".rumble-sticky--show").classList.add("active");
else document.querySelector(".rumble-sticky--show").classList.remove("active");
;
var throttleTimer;
const throttle = (callback, time) => if (throttleTimer) return;
throttleTimer = true; setTimeout(() => callback(); throttleTimer = false; , time); ;
const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
window.addEventListener("scroll", () =>
throttle(handleNavScroll, 10);
);
);
window.REBELMOUSE_LOWEST_TASKS_QUEUE.push(function()
function setCookie(cname, cvalue, exdays) var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+ d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
function getCookie(cname)
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i
');
);
window.REBELMOUSE_LOWEST_TASKS_QUEUE.push(function(){
const updatePrimaryTags = () => const primaryTagElements = document.querySelectorAll( '.custom-field-selected-topic' ); if (!primaryTagElements) return; primaryTagElements.forEach((tag) => if (!tag) return; if (tag.getElementsByTagName('a').length !== 0) return;
const topicSlug = tag.innerText .toString() .toLowerCase() .trim() .normalize("NFD") .replace(/[u0300-u036f]/g, "") .replace(/s+/g, '-') .replace(/&/g, '-y-') .replace(/[^w-]+/g, '') .replace(/--+/g, '-') .replace('manger-et-sortir', 'manger-sortir') .replace('eat-and-drink', 'eat-drink');
const cityPageElement = document.querySelector('.city-name.article'); let link; if(cityPageElement) const href = cityPageElement.getElementsByTagName('a')[0].getAttribute('href'); link = `$href$topicSlug`
else link = `/$topicSlug`
const linkEl = document.createElement('a'); linkEl.setAttribute('href', link); linkEl.innerText = tag.innerText; tag.innerHTML = ''; tag.appendChild(linkEl) ); ; updatePrimaryTags();
});
window.REBELMOUSE_LOWEST_TASKS_QUEUE.push(function()
var _sponsored = ""; var _nsfw = "false"; var post_id = document.querySelector('article').getAttribute("elid"); var nsfw = 546863483; var fr_vedette = 549266910; var sponsored = 549961341; var post = JSON.parse(document.querySelector("#post-context-" + post_id).innerHTML); if (post.post.sections.includes(fr_vedette) );
window.REBELMOUSE_LOWEST_TASKS_QUEUE.push(function()
var _sponsored = ""; var _nsfw = "false"; var post_id = document.querySelector('article').getAttribute("elid"); var nsfw = 546863483; var fr_vedette = 549266910; var sponsored = 549961341; var post = JSON.parse(document.querySelector("#post-context-" + post_id).innerHTML); if (post.post.sections.includes(fr_vedette) );
window.REBELMOUSE_LOWEST_TASKS_QUEUE.push(function()
var post = JSON.parse(document.querySelector("#post-context-"+c_art_id).innerHTML);
if (c_sections.includes(c_fr_vedette) );
window.REBELMOUSE_LOWEST_TASKS_QUEUE.push(function(){
function prepareFloatingHeadline(video) var videoParent = video.closest('.widget'); var pusher = document.createElement("div"); pusher.style.height = "76px"; pusher.classList.add("js-hidden-panel"); var closeButton = document.createElement("div"); closeButton.classList.add("close-button"); closeButton.classList.add("close-button-hide");
var clonedHeadlines = videoParent.querySelector('.widget__body').cloneNode(true); clonedHeadlines.classList.replace('widget__body', 'widget__floating-headlines');
var clonedDate = videoParent.querySelector('.widget__head + .widget__body').cloneNode(true); clonedDate.classList.replace('widget__body', 'widget__floating-info'); if (clonedHeadlines.querySelector(".widget__subheadline")) clonedHeadlines.removeChild(clonedHeadlines.querySelector(".widget__subheadline"));
var widget_section = clonedHeadlines.querySelector(".widget__section"); if (widget_section) clonedHeadlines.removeChild(widget_section);
if (clonedDate.querySelector(".js-expandable")) clonedDate.removeChild(clonedDate.querySelector(".js-expandable"));
var contentContainer = document.createElement("div"); contentContainer.classList.add('info-wrapper-sticky'); //contentContainer.appendChild(closeButton); contentContainer.appendChild(clonedHeadlines); contentContainer.appendChild(clonedDate);
video.appendChild(contentContainer); video.appendChild(closeButton);
function createElChangeListener(selector, callback) const initializedNodes = new Set([]);
document.querySelectorAll(selector).forEach(node => callback(node); initializedNodes.add(node); );
const mutationObserver = new MutationObserver(() => const nodes = document.querySelectorAll(selector); nodes.forEach(node => if (!initializedNodes.has(node)) callback(node); initializedNodes.add(node);
); );
mutationObserver.observe(document.body, childList: true, subtree: true );
var stopVideo = function ( element ) var iframe = element.querySelector( 'iframe'); var video = element.querySelector( 'video' ); if ( iframe ) var iframeSrc = iframe.src.replace("&autoplay=1",""); iframe.src = iframeSrc;
if ( video ) video.pause();
;
createElChangeListener('.widget__head', (el) =>
if(el.querySelector('.widget__video')) if(document.querySelector('.widget__head a.widget__play') && el.querySelector('.article-body')) document.querySelector('.widget__head a.widget__play').click();
prepareFloatingHeadline(el.querySelector('.widget__video')); floatingObserver.observe(el);
); if(document.querySelector(".close-button")) document.querySelector(".close-button").addEventListener("click", function() var entryVideo =document.querySelector('.article-body .widget__video');
if (entryVideo.querySelector('.article-body [type="video-content"]')) document.querySelector(".close-button").classList.add("close-button-hide"); entryVideo.querySelector('.article-body [type="video-content"]').classList.remove('rumble-sticky-video') if(entryVideo.querySelector('.widget__floating-headlines')) entryVideo.querySelector('.widget__floating-headlines').classList.remove('headline-sticky');
if(entryVideo.querySelector('.widget__floating-info')) entryVideo.querySelector('.widget__floating-info').classList.remove('info-sticky');
entryVideo.classList.remove("js-hidden-panel") if( entryVideo.querySelector('video')) entryVideo.querySelector('video').pause();
entryVideo.querySelector('video').style.height = "100%"; entryVideo.querySelector('video').parentElement.style.maxHeight = "370px"; else stopVideo(entryVideo);
entryVideo.classList.remove('rumble-sticky--show');
)
});