Narcity may receive a small commission if you purchase something we recommend in this article, which was created by the Narcity Shop team.
With larger weddings becoming a possibility again around the country, invites are trickling in and it’s time to start planning on what to wear.
Since ceremonies will most likely be held outside, we want to not only look great but feel great too—especially in this darn heat.
We found 11 wedding guest dresses that are both fashionable and affordable.
One Shoulder Ruched Ruffle Hem Floral Dress
SHEIN
Price: $23
Details: When you don’t have a lot of money to spend on a new frock (because you spent all your money on the wedding gift), you can always count on SHEIN for something nice and cheap. Wear this dress again to a garden party or even a girl’s night out.
$23 On SHEIN
Georgette Handkerchief Dress
Michael Kors
Price: $99 ($260)
Details: This sophisticated dress from Michael Kors can easily be transitioned from day to night. The rich ruby colour, and the fact that it’s on clearance, is just too gorgeous to pass up!
$99 On MICHAEL KORS
Flutter-Sleeve Mini Dress
Banana Republic
Price: $96 ($160)
Details: If you’re eyeing this chambray blue a-line dress, right now you can get 40% off at checkout. It’s currently available in sizes 0, 4, 6 and in tall sizes 2 and 8.
$96 On BANANA REPUBLIC
Floral Dolman Elbow Sleeve Dress
Nordstrom
Price: $119
Details: Sometimes you want to be a little more conservative and wear a full-length dress, so this is a great option. It has flowy sleeves which means no pit stains if you’re standing out in the heat all day. It’s also super comfortable to dance in, too.
$119 On NORDSTROM
Maxi Slip Dress In ‘70s Floral Print
ASOS
Price: $72
Details: Slip dresses are super trendy right now and you can find one for cheap on ASOS. If it’s your first time shopping the brand, you can get 15% off with the promo code ASOSNEW15. If you want one in a solid colour, try this slip dress in navy blue instead.
$72 On ASOS
Bardot Pleated Layered Dress
SHEIN
Price: $35
Details: This pleated pink number is a great dress to wear to a beach wedding or a small, intimate backyard ceremony. Even though it’s already so affordable, you can opt to pay in four $8.75 instalments with Afterpay.
$35 On SHEIN
Scatter Sequin Midi Dress
ASOS
Price: $143
Details: If you want a little sparkle while attending your best friend’s wedding, this pale gold number is picture-perfect. It has a bit of a plunging neckline, batwing sleeves and a tie waist. When in doubt, go all out.
$143 On ASOS
Lace Sheath Dress
Nordstrom
Price: $149
Details: You can’t go wrong with a lovely lace dress at someone’s wedding—as long as it’s not white. This one comes in a gorgeous powder blue colour and has scalloped details at the sleeves. Pair it with a nude heel and you’re good to go.
$149 On NORDSTROM
Openwork Circle Midi Dress
Simons
Price: $109
Details: Sometimes you want to look stunning without trying too hard. This black satiny dress has tiny little cutouts on the side that show just a bit of skin without being scandalous. It’s perfect for an evening cocktail reception.
$109 On SIMONS
Short-Sleeve Metallic Ruched Shift Dress
The Bay
Price: $119.60 ($299)
Details: What makes this metallic number so great is that you can wear it to a wedding and then keep it in your closet for other special events like New Year’s Eve parties, awards ceremonies, etc. It’s on sale and available in sizes 0 – 14.
$119.60 On THE BAY
Polka Dotted Mesh Dress
H&M
Price: $69.99
Details: Channel your inner ’50s Hollywood starlet with this retro-inspired dress with a tiered skirt. The black bow on the side is a nice touch. If you’re looking for a handbag to match, you can add this black one for $20 to your cart, too.
$69.99 On H&M
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)p.pbq(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