Your blunt friend. The one who tells it like it is – and usually in an inappropriate manner. Where would we be without them? Here’s a list of great gifts for sarcastic friends that they are sure to appreciate.
Want more great gift ideas that are both thoughtful and affordable this holiday season? Then be sure to sign up for my holiday gift idea emails!Sign up here!
This is always one of my favorite gift idea lists to write. Probably because I’m blunt myself. And snarky. And sarcastic. And those all just go wonderfully together, no?
I’m willing to bet you’re one of those people too since you hang out around here with me. And that probably means you’ve got friends on your Christmas gift list that are like that too. Same here.
I’ve searched the internets high and low and here are some of the best gift ideas for our blunt friends that I’ve found. Cheers to the blunt, sarcastic beast in us all!
This post contains affiliate links for your shopping convenience. Clickhereto read my full disclosure policy.
Funny Gift Ideas for Sarcastic Friends
Sassy Golden Girls Items
Can’t Sit With Us T-Shirt / Dorothy in the Streets. Blanche in the Sheets. Mug
I went down a Golden Girls rabbit hole last week. One search on Amazon had me rolling! My Great Uncle and I used to watch the Golden Girls and I forgot just how much I liked their sassiness. I love both this t-shirt and the mug. You can also get a Dorothy in the Streets. Blanche in the Sheets. t-shirt. These are especially great gifts for your sassy friend!
Hope you Brought Beer Doormat / Warrant Doormat / Welcome Bitches Doormat / Filthy Animal Doormat
This whole Etsy store is full of hilarious doormats. I had a hard time picking just four. I think I want the Hope You Brought Beer one for my house. I mean just because I drink cheap beer doesn’t mean I share it. 😉
Blunt T-Shirts
Say What Everybody Else is Thinking T-Shirt / Classy T-Shirt / No Filter T-Shirt
Help your blunt friends warn people about their problem with one of these t-shirts.
Anything Anne Taintor
Anne Taintor Flask / Give a Damn Notepad / Anne Taintor Coin Purse
I’m sure you’ve heard of Anne Taintor or seen her products before, but to me they just never get old. She pairs vintage style photos with sarcastic comments to make for fantastic little gift items. These are more good gifts for that sassy friend of yours!
Inappropriate Pillows
WTF Pillow / Greek Key WTF Pillow / Lollipop Dipped in Psycho Pillow (no longer available)
Now who wouldn’t appreciate a good WTF (Why that’s fantastic! 😉 ) pillow? And have you ever seen a more classier one than that greek key version?It’s also reversible. One side has WTF and the other has XOX. When the preacher stops by for a visit, you can just flip that bad boy around.
Last year, I included the Cards Against Humanity gameas one of the gift ideas for sarcastic people. Hands down, it’s one of the funniest and most inappropriate games to play. I just discovered this new game, WTF Did You Say?!?, and it promises to be “bigger & bolder” than Cards Against Humanity. If that’s the case, even I can’t imagine how unmoral it’ll be. 😉 Of course, I’ve already ordered it for our next gamenight here.
The Official Dictionary of Sarcasm
The Official Dictionary of Sarcasm
For all your blunt and sarcastic friends who really want to make sure they can always one-up you, get them The Official Dictionary of Sarcasm. Just be prepared with comebacks, folks.
Cards Against Humanity
The Cards Against Humanity Game. Have you played it? You should.However, it’s definitely not for the faint of heart. If they’ve already got the game, check to see if they have the expansion packs. Those make great gifts as well.
Hustlin’ Pouch
For the lady on your list who busts a** daily, this pouch will be perfect for her.
Inappropriate Coasters
Inappropriate coasters for inappropriate people. Needless to say – I have these and love them.
Say it Sarcastically Mug
Let’s be sarcastic together, darling. Is there any other way to be? This mug and I say no.
Do Epic sh*t Print
Do epic sh*t print. Because we should all be reminded that weare capable of changing the world with our epic-ness. 😉
What funny gift ideas for sarcastic friends can you add to this list?
Find the perfect gift for someone else on your list by clicking any of the other gift ideas below!
Gifts for the Impossible Man
Funny Gift Ideas
Gifts for Kids That Aren’t Toys
Gift Ideas for Friends
Unique Gifts for Someone Who Has Everything Already
Gifts for Drinkers
Best Gifts for People Who Travel
Gifts for Grandparents
Gifts for Book Lovers
Gifts for People Who Love Music
Gifts for New Homeowners
Unique Personalized Gifts
Gifts that Keep Giving
Gifts for Her
Gifts for Couples
Gifts for Creative People
Gifts for Foodies, Cooks and Entertainers
Gifts for DIYers
Don’t forget to sign up for the holiday gift ideas email subscription as well! You’ll only get 1-3 emails a week (usually no more than two unless there’s like a super awesome sale somewhere) with gift ideas and great sales so that we aren’t all in debt out the wazoo after the holidays. 😉 Use the form below to sign up or sign up here!
function extend(destination, source) {
for (var prop in source) {
destination[prop] = source[prop];
}
}
if (!Mimi) var Mimi = {};
if (!Mimi.Signups) Mimi.Signups = {};
Mimi.Signups.EmbedValidation = function() {
this.initialize();
var _this = this;
if (document.addEventListener) {
this.form.addEventListener('submit', function(e){
_this.onFormSubmit(e);
});
} else {
this.form.attachEvent('onsubmit', function(e){
_this.onFormSubmit(e);
});
}
};
extend(Mimi.Signups.EmbedValidation.prototype, {
initialize: function() {
this.form = document.getElementById('ema_signup_form');
this.submit = document.getElementById('webform_submit_button');
this.callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random());
this.validEmail = /.+@.+\..+/
},
onFormSubmit: function(e) {
e.preventDefault();
this.validate();
if (this.isValid) {
this.submitForm();
} else {
this.revalidateOnChange();
}
},
validate: function() {
this.isValid = true;
this.emailValidation();
this.fieldAndListValidation();
this.updateFormAfterValidation();
},
emailValidation: function() {
var email = document.getElementById('signup_email');
if (this.validEmail.test(email.value)) {
this.removeTextFieldError(email);
} else {
this.textFieldError(email);
this.isValid = false;
}
},
fieldAndListValidation: function() {
var fields = this.form.querySelectorAll('.mimi_field.required');
for (var i = 0; i < fields.length; ++i) { var field = fields[i], type = this.fieldType(field); if (type === 'checkboxes' || type === 'radio_buttons') { this.checkboxAndRadioValidation(field); } else { this.textAndDropdownValidation(field, type); } } }, fieldType: function(field) { var type = field.querySelectorAll('.field_type'); if (type.length) { return type[0].getAttribute('data-field-type'); } else if (field.className.indexOf('checkgroup') >= 0) {
return 'checkboxes';
} else {
return 'text_field';
}
},
checkboxAndRadioValidation: function(field) {
var inputs = field.getElementsByTagName('input'),
selected = false;
for (var i = 0; i < inputs.length; ++i) { var input = inputs[i]; if((input.type === 'checkbox' || input.type === 'radio') && input.checked) { selected = true; } } if (selected) { field.className = field.className.replace(/ invalid/g, ''); } else { if (field.className.indexOf('invalid') === -1) { field.className += ' invalid'; } this.isValid = false; } }, textAndDropdownValidation: function(field, type) { var inputs = field.getElementsByTagName('input'); for (var i = 0; i < inputs.length; ++i) { var input = inputs[i]; if (input.name.indexOf('signup') >= 0) {
if (type === 'text_field') {
this.textValidation(input);
} else {
this.dropdownValidation(field, input);
}
}
}
this.htmlEmbedDropdownValidation(field);
},
textValidation: function(input) {
if (input.id === 'signup_email') return;
if (input.value) {
this.removeTextFieldError(input);
} else {
this.textFieldError(input);
this.isValid = false;
}
},
dropdownValidation: function(field, input) {
if (input.value) {
field.className = field.className.replace(/ invalid/g, '');
} else {
if (field.className.indexOf('invalid') === -1) field.className += ' invalid';
this.onSelectCallback(input);
this.isValid = false;
}
},
htmlEmbedDropdownValidation: function(field) {
var dropdowns = field.querySelectorAll('.mimi_html_dropdown');
var _this = this;
for (var i = 0; i < dropdowns.length; ++i) { var dropdown = dropdowns[i]; if (dropdown.value) { field.className = field.className.replace(/ invalid/g, ''); } else { if (field.className.indexOf('invalid') === -1) field.className += ' invalid'; this.isValid = false; dropdown.onchange = (function(){ _this.validate(); }); } } }, textFieldError: function(input) { input.className = 'required invalid'; input.placeholder = input.getAttribute('data-required-field'); }, removeTextFieldError: function(input) { input.className = 'required'; input.placeholder = ''; }, onSelectCallback: function(input) { if (typeof Widget === 'undefined' || !Widget.BasicDropdown) return; var dropdownEl = input.parentNode, instances = Widget.BasicDropdown.instances, _this = this; for (var i = 0; i < instances.length; ++i) { var instance = instances[i]; if (instance.wrapperEl === dropdownEl) { instance.onSelect = function(){ _this.validate() }; } } }, updateFormAfterValidation: function() { this.form.className = this.setFormClassName(); this.submit.value = this.submitButtonText(); this.submit.disabled = !this.isValid; this.submit.className = this.isValid ? 'submit' : 'disabled'; }, setFormClassName: function() { var name = this.form.className; if (this.isValid) { return name.replace(/\s?mimi_invalid/, ''); } else { if (name.indexOf('mimi_invalid') === -1) { return name += ' mimi_invalid'; } else { return name; } } }, submitButtonText: function() { var invalidFields = document.querySelectorAll('.invalid'), text; if (this.isValid || !invalidFields) { text = this.submit.getAttribute('data-default-text'); } else { if (invalidFields.length || invalidFields[0].className.indexOf('checkgroup') === -1) { text = this.submit.getAttribute('data-invalid-text'); } else { text = this.submit.getAttribute('data-choose-list'); } } return text; }, submitForm: function() { this.formSubmitting(); var _this = this; window[this.callbackName] = function(response) { delete window[this.callbackName]; document.body.removeChild(script); _this.onSubmitCallback(response); }; var script = document.createElement('script'); script.src = this.formUrl('json'); document.body.appendChild(script); }, formUrl: function(format) { var action = this.form.action; if (format === 'json') action += '.json'; return action + '?callback=' + this.callbackName + '&' + serialize(this.form); }, formSubmitting: function() { this.form.className += ' mimi_submitting'; this.submit.value = this.submit.getAttribute('data-submitting-text'); this.submit.disabled = true; this.submit.className = 'disabled'; }, onSubmitCallback: function(response) { if (response.success) { this.onSubmitSuccess(response.result); } else { top.location.href = this.formUrl('html'); } }, onSubmitSuccess: function(result) { if (result.has_redirect) { top.location.href = result.redirect; } else if(result.single_opt_in || !result.confirmation_html) { this.disableForm(); this.updateSubmitButtonText(this.submit.getAttribute('data-thanks')); } else { this.showConfirmationText(result.confirmation_html); } }, showConfirmationText: function(html) { var fields = this.form.querySelectorAll('.mimi_field'); for (var i = 0; i < fields.length; ++i) { fields[i].style['display'] = 'none'; } (this.form.querySelectorAll('fieldset')[0] || this.form).innerHTML = html; }, disableForm: function() { var elements = this.form.elements; for (var i = 0; i < elements.length; ++i) { elements[i].disabled = true; } }, updateSubmitButtonText: function(text) { this.submit.value = text; }, revalidateOnChange: function() { var fields = this.form.querySelectorAll(".mimi_field.required"), _this = this; for (var i = 0; i < fields.length; ++i) { var inputs = fields[i].getElementsByTagName('input'); for (var j = 0; j < inputs.length; ++j) { if (this.fieldType(fields[i]) === 'text_field') { inputs[j].onkeyup = function() { var input = this; if (input.getAttribute('name') === 'signup[email]') { if (_this.validEmail.test(input.value)) _this.validate(); } else { if (input.value.length === 1) _this.validate(); } } } else { inputs[j].onchange = function(){ _this.validate() }; } } } } }); if (document.addEventListener) { document.addEventListener("DOMContentLoaded", function() { new Mimi.Signups.EmbedValidation(); }); } else { window.attachEvent('onload', function() { new Mimi.Signups.EmbedValidation(); }); }})(this);