ByBindu Bansinath,
a writer for the Cut who covers news, culture, and relationships.Her work has also appeared in the New York Times, the New York Times Magazine, The Paris Review, and Electric Literature. She was previously an assistant editor at Harper's.
As much as I love a good ghost story, sometimes there’s no bigger jump scare than an ex popping back into your life: the serial cheater who reinvents himself on TikTok as a bona fide relationship coach, the fling who can’t stop drunk-dialing 15 years later, the ex-boyfriend from high school who gets back in touch to offer $4,000 for sex work. Here are five stories from women whose exes came back to haunt them.
He wouldn’t stop checking out my LinkedIn profile.
My ex and I dated for four years. We were long-distance for the last part of it, which was one of the reasons we eventually broke up. I told him I was going to live in New York, and he didn’t want to move. It was a bummer, but we remained friends and still spoke. We had an agreement that if either party started talking to someone in a romantic way, we’d let the other person know and wouldn’t continue talking.
A few months after our breakup, he sent me a text like, “Hey, saw your little brother last night!” I went to respond, and my text turned green. Then I got a notification that he un-collabed with me on our Spotify playlist, which is how I found out I was blocked on everything. My friends told me he had hard-launched a new girlfriend to Instagram, which I thought was insane because we’d been talking up to that point and he never mentioned this person.
He dated her for a year and a half. Again, I was blocked, so I couldn’t contact him, nor did I want to. But then he made an Instagram account with his artwork and viewed my account or my LinkedIn. There were some weeks where he would look at my LinkedIn every day. I still use Tumblr, and he liked all the photos of myself I’d posted. It was gross. I got notifications throughout their entire relationship. Whenever there was a lull, I’d think, Oh, maybe he went to therapy or something.
After he broke up with her — I knew something must be going on with them; I was getting multiple LinkedIn notifications a day — I got a long text from him on International Women’s Day. “I think about you, I’ll always love you,” things of that nature. Like, keep that in your Notes app. I didn’t respond for a few months, but I wanted him to know that when I saw those notifications, it disgusted me. Eventually, I texted him to seek help and never notify my phone again. Then I finally got to block him on everything, LinkedIn included. And Tumblr. Get out of my mood boards. — Amy, 28, Brooklyn, photo producer
He popped back up on my “For You” page as a relationship coach.
I met my ex-husband right after my freshman year of college. We matched on Tinder. He was in the military and was stationed at a training camp near my campus in Missouri. From day one, it was your typical toxic relationship with lots of love bombing. He was going back to Hawaii soon, where he lived, but after a few dates we decided to make long-distance work.
He returned home and suggested we get married. In the military, you get extra benefits for being married, and his sales pitch to me was, “It’s just a paper, you can stay in school in Missouri, we’ll use the money for you to visit, we’ll save up.” My dumb ass thought, Okay, this sounds really good, it’s giving “a future.” But right after we got married, I was like, Oh, this is one of the worst decisions I’ve ever made. He wouldn’t answer calls or texts. I wasn’t doing well in school and decided to transfer and have a clean slate in Hawaii. He moved into my place there but didn’t even contribute to rent, though he used the money he pocketed to buy a used BMW and VIP sections at the club. He was obsessed with becoming “Instafamous” — TikTok wasn’t around back then. He cheated on me and lied to me, and I filed for divorce after a year and half. He dragged his feet signing the papers because he still wanted to get money from the military. A couple months later, he left for San Francisco, and I’d get texts saying he missed me, but I wouldn’t respond.
Eventually, I moved to New York. During the pandemic, I was scrolling on TikTok and he popped up on my “For You” page, giving out relationship advice to men. I was like, This is insane. Everything he was saying to do were things he didn’t do: Guys need to stop bread-crumbing, guys have a good girl and then end up cheating. Oh my God, what? This man who is a serial cheater telling men not to cheat? I blocked him, and he needs to stay blocked. We can’t have any more jump scares. — Julia, 28, Jersey City, publicist
My high-school ex offered me $4,000 to peg another woman.
My high-school boyfriend came from a very wealthy family. Growing up, he got everything he ever wanted. After graduating, he went into finance. Ten or 15 years after we last saw each other, we met up for drinks. I forget who reached out first, but he knew I was married with a child, and I think we’d just been politely DM-ing on Facebook. At drinks, he told me in passing that he was into sugar dating, which I didn’t think was unusual. He’s a good-looking guy with a lot of money who travels a lot and he said he didn’t want a long-term commitment, and I know a lot of women who have briefly been sugar babies and had okay experiences.
We didn’t speak for another few years after those drinks. Then, out of the blue, I get a DM: “Hey, wanna make $4k in one afternoon?” I asked if he was hacked. He says, “Real offer for the weekend, I’m having a group thing. Me and two other girls, one of them and you would wear a strap-on and fully get into the other girl.” (I’d just had my second baby, by the way.) I was so uncomfortable that I made a joke; I’m Jewish and it was Purim, so I asked him if it was a Purim-themed event. Then I told him I’d have to politely decline “because I don’t cheat on my husband, nor do I do sex work, though I support those who do.” He asked me to refer him to “interested parties.” At that point, I blocked him. I was offended, but part of me also wanted to know why. What did he think I would say? Why the fuck did he ask me, considering we hadn’t talked for almost two years and you know I’m married with two kids? It haunts me! — Stephanie, 34, New York, journalist
He sent me a $20 Venmo to get back in touch.
My ex-situationship and I met in college. We were in the same year and he worked in the cafeteria. I’d see him dishing out food at his little station and think, That guy is so cute. He had a girlfriend at the time, but a few years later, they broke up and we started casually hooking up, a friends-with-benefits situation I’d fall back on when I didn’t have a boyfriend. He once gave me chlamydia, but I liked him a lot as a person; he was just a nice soul who didn’t like using condoms.
We both dropped out of college at different points to start working and stopped hooking up. I started a bartending gig, got into a different friend group, and kind of lost my attraction to him. In 2017, right before I moved to another city, he showed up at my bartending shift. It was one of my last nights in town. I’d taken some molly and was feeling friendly, positive, and nostalgic toward everyone. He and a few friends came back to my place afterward to keep hanging out. After an hour or two, he was the only one left. In my altered state, I innocently thought we were just hanging out as friends, but he put a move on me and we started making out. I was like, “I’m sorry, but I just don’t feel anything anymore.” I’m sure he was dejected, but he slept next to me, and that was that. It was the last time I saw him.
Six years later, I’m living with my then-partner in Portland. My ex-situationship sends me a $20 Venmo and writes, “Hey I know this is super random. I know it’s been years, but I still think about you. I’d love to catch up, even if it’s just texting. My number is still the same. Use the $20 for lunch or whatever. I had no other way to reach you, lol.” I was floored. I have no ill will toward him, but I had no desire to reach back out. The spark was totally gone for me. I think I bought some DoorDash with that $20, sent a “thank you” to him out into the universe, and that was that. — Tina, 32, Portland, nonprofit worker
He’s been drunk-dialing me for 15 years.
When I was young and dumb in 2009, I met this guy at the wine bar I managed. He was 14 years older than me. He was pretty, I was pretty, and we started dating. It was fun in the beginning, a lot of partying and road trips. He told me he was divorced and constantly fielded calls from his ex-wife, with whom he shared a daughter. But our relationship ended when his wife — whom he turned out to still be married to — called and told me, “I know you’ve been around for a long time, he has another new girlfriend now, here’s her number and name, you deal with her, I’m sick of this shit.” I hung up and blocked them both. He called me from a different number and just continued to embellish the lie: “I don’t love her, I want to be separated, we ARE separated.” By that point, I found our relationship tiresome, all drinking and lunches; it wasn’t very deep to me. He was in love and I was falling out of it.
We didn’t speak for a few months. But eventually, he started calling me from different numbers every time he got drunk. He’d say, “You ruined my life, you witch!” Then he’d mellow out and say, “My biggest mistake is not marrying you and having kids with you.” The calls came once a week, then once a month. I kept blocking him, but every time I got a new phone, he’d get automatically unblocked and would be right there again.
We ran into each other four years after our breakup and had a drink. He told me, “I still love you, you’re the love of my life,” and I laughed in his face. He drunk-called me just two weeks ago. I was like, “It’s been 15 years.” But when I’m bored, it’s kind of amusing. — Anna, 36, Serbia, project manager
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()}});
}, {"3":3,"6":6,"17":17,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(17),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(3),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 i=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||i.classList.remove("open")})}function gtmSendReport(e,n,t){let i={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(i.eventLabel=n.href),gtm.reportNow(i)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const i=t.split("?"),o=new URLSearchParams(i[1]);for(let e of n.entries())o.set(e[0],e[1]);t=`${i[0]}?${o.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()||auth.isMobileAppRequest())&&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;
}, {"3":3,"4":4,"17":17,"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();
// ]]