Note: I wrote this review of Jeremy Saulnier’s Blue Ruin around two or so years ago, give or take, which is the blink of an eye in a cosmological context but close to a fucking lifetime in the context of film criticism born in the social media era. I’m sharing it here, now, for a couple of reasons; first, because I can’t just link to it or Tweet it out or share it on Facebook, because the site I originally wrote the piece for underwent renovations and now the article no longer exists on that site; second, because we are one week off from the premiere of Saulnier’s next picture, Green Room, which I liked so much that it made me feel the need to reevaluate my thoughts on Blue Ruin. Without further ado:
When does a film transition from commenting on violence to celebrating it? Your enjoyment of Jeremy Saulnier’s debut picture, the coyly monikered Blue Ruin, will most likely hinge on your response to that crucial question. Gritty, unflinching, and relentlessly bleak, the film comes packed to the gunwales with moments of splatter that would do Quentin Tarantino proud. Newcomer Saulnier likes his brutality, and he likes it graphic: Heads burst like grapefruit, guns explode in rapid staccato entreaties, and blood flows like a daguerreotype forming on a bathroom floor. If nothing else, Blue Ruin certainly isn’t for the squeamish.
It’s difficult to tell, though, whether Saulnier is fully aware of the through-line of barbarism that gives his picture its backbone, or whether he sincerely intends to present a fresh take on how vengeance begets vengeance. Blue Ruin fits snugly in the annals of modern revenge cinema, from Tarantino’s recent films to Chan-wook Park’s “Vengeance” trilogy (Sympathy for Mr. Vengeance, Oldboy, Lady Vengeance); the film finds its basis in a sloppily planned act of retribution which quickly sparks off an avalanche of avengement. But that commencement alone isn’t enough to satisfy Saulnier’s narrative, such that by the time we arrive at the picture’s logical conclusion, circumstances have spiraled out of hand to such an extreme degree that Saulnier risks undermining his own thesis—if, in fact, he has one in mind in the first place.
Blue Ruin’s anti-hero is scraggly, perpetually shell-shocked Dwight (Macon Blair), a man whose entire existence has been thrown astray by the murder of his parents. How long ago this horror occurred isn’t elaborated on; we only understand that ever since, Dwight has lived as a vagabond, breaking and entering strangers’ homes to sneak a shower with shame-faced resignation. As the film begins, though, Wade, the man he believes to have taken his mother’s and father’s lives, gets out of jail after carrying out a paltry sentence, and so Dwight determines to retaliate against him.
All of this happens within the first 20 minutes of the movie, which may or may not be an issue depending on your fondness for brevity. Saulnier has a terrific eye as well as a sense of pacing and editing that weaves melancholy right into Blue Ruin’s DNA; it’s a heartbreaking, tragic film that captures humanity’s confusing ugliness with pristine clarity, often using light as a means of conveying tone and character all at once. But once Dwight makes his move on Wade, the delights of that opening quarter slowly start to fade and give way to convention. It turns out that, for a double murderer, Wade was quite beloved, and when Dwight kills him in a moment of brash, amateur violence that would be hilarious if it weren’t so callously detail-oriented, he draws the ire of Wade’s family.
From here, Blue Ruin becomes something of a cat-and-mouse chase movie peppered with occasional moments of viscera, unlike the somber picture about a seemingly benign man haunting the fringes of society that the film starts as. That’s not to say the work Saulnier does post-murder fails to pass muster, per se, but he does shift gears in a way that can be best described as abrupt. On top of that, everything leading up to Dwight’s bathroom confrontation with Wade is so strong, and the story so quietly told (there’s almost no dialogue leading up to their scuffle), that once Blue Ruin starts to exposit, the effect is somewhat jarring. It’s not enough to disrupt the movie, mind, but enough that, once all is said and done, one might still wish for the film Saulnier shows us at the onset.
More troubling than its stylistic and tonal inconsistencies, though, is its incoherent perspective on violence. One line uttered by Dwight’s childhood pal and veteran, Ben (Devin Ratray in excellent form), tells us everything we need to know. “That’s what bullets do,” he bluntly states to Dwight (and us) in the wake of one of the film’s more gruesome flourishes. Indeed they do, and no one involved here understands this truism better than Saulnier. But though he refuses to romanticize his violence, he leans on it too much as a cathartic device for his own good; the backwoods justice Saulnier engages with comes to feel like a fantasy, breaking from the verisimilitude of his starting place. Eventually, the film’s insistence on human bloodthirst becomes too much to buy into, and Saulnier fatally undercuts his own meditation on cycles of violence by reveling in them. The results aren’t fatal, but they are disappointing.
How much has changed for me since 2014 and 2016, and specifically since watching Green Room for the first time? I’m not sure. I will say that speaking with Jeremy about Green Room (see that chat later this week at Movie Mezzanine) gave me a new appreciation for his style and approach as a filmmaker, which in turn gave me new appreciation for all the effort he put into getting Blue Ruin off the ground (including, but not limited to, the Kickstarter campaign he launched to fund it, which I knew about previously and already admired). And Green Room itself, a nasty little bit of business that by its very nature confounds our baseline expectations of its genre. It is an action thriller set up as a siege movie where the heroes’ best efforts at survival fall apart in the blink of an eye.
Similarly, Blue Ruin is a revenge film where the revenge is messy to the point of being desperate and even a little pathetic. Dwight is so not at all cut out for vengeance. He’s got some moves, sure – we see that much proven out as the film progresses – but he isn’t strong, or skilled with weapons, or familiar with the killing act. Even a movie like Oldboy, which is all about the futility of revenge, gives us a cool action scene to excite and enthrall us. Blue Ruin has none of that. In that respect, it’s almost disappointing for fans of the genre (sort of how Oldboy was disappointing to me on first viewing).
And maybe that’s intentional. Maybe that’s the point. I’m curious to rewatch it to see how my old evaluations stand up two years later. The one thing I will say is that Saulnier is a real craftsman, which is remarkable when you hear him talk about his basic approach to shooting movies. This is where his background as a cinematographer comes in handy, of course, but he isn’t a formalist and he isn’t interested in making a movie the “right” way as much as he is in making it “his” way, which, frankly, is always the “right” way of making anything. I may walk away from a second viewing of Blue Ruin feeling the same about it as I did before, but I know that my respect for Saulnier’s abilities as a filmmaker will remain intact.
{"id":"2","mode":"form","open_style":"in_place","currency_code":"USD","currency_symbol":"$","currency_type":"decimal","blank_flag_url":"https:\/\/agcrump.work\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/agcrump.work\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"featured_image","featured_image_url":"https:\/\/agcrump.work\/wp-content\/uploads\/2025\/10\/image-asset-179x200.webp","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":false,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"A Constant Visual Feast","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Support My Work:","form_subtitle":"","currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thanks for supporting my work!","payment_confirmation_title":"A Constant Visual Feast","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much do you want to tip?","initial":{"instruction_type":"normal","instruction_message":"How much do you want to tip?"},"empty":{"instruction_type":"error","instruction_message":"How much do you want to tip?"},"invalid_curency":{"instruction_type":"error","instruction_message":"How much do you want to tip?"}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"Want to make a recurring tip?"},"success":{"instruction_type":"success","instruction_message":"Want to make a recurring tip?"},"empty":{"instruction_type":"error","instruction_message":"Want to make a recurring tip?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}