Før alt forandret seg levde Hannah Rosenthal et godt liv. Men nå er Berlin dekket av flagg med hakekors og Hannah er ikke lenger velkommen der hun tidligere følte seg hjemme. Et glimt av håp kommer i form av St. Louis, et transatlantisk skip som lover jøder trygg passasje over til Cuba. Familien Rosenthal selger alt de eier for å finansiere visum og billetter. Til å begynne med føles båtreisen som luksus, men under reisen endrer alt seg, og snart blir skipet som et fengsel. Sytti år senere får Anna Rosen en pakke på tolvårsdagen sin. Pakken er fra grandtanten Hannah, som hun aldri har møtt. Anna og moren reiser umiddelbart til Cuba for å møte sin gamle slektning, og for første gang forteller Hannah den ukjente historien om sin reise med St. Louis.
Berlin, 1939: Byen er dekket med røde, hvite og svarte flagg, og der familien Rosenthal en gang fant venner, møter de nå lukkede dører. Det begynner å bli farlig for 12 år gamle Hannah og familien, og når skipet St. Louis skal frakte jødiske passasjerer fra Berlin til asyl på Cuba, øyner de et håp om å overleve. Hannah inngår et løfte med bestevennen, Leo: Hva enn som skjer, skal de alltid ha en framtid sammen.
New York, 2014: Den 12 år gamle Anna Rosen mottar en mystisk pakke fra Cuba, som inneholder brev og bilder av hennes avdøde fars familie – en familie hun aldri har møtt. I et forsøk på å forstå farens ukjente fortid, reiser Anna og moren til Havanna.