Faits: A. A.a H.Y._ et F.Y._ ont pris à bail le 1er avril 1995 une surface de bureaux commerciaux d'environ 130 m2 en ville de Genève, moyennant un loyer annuel initial de 69'900 fr. Valable jusqu'au 31 mars 2000, le contrat était ensuite renouvelable tacitement de cinq ans en cinq ans. Le préavis de résiliation devait être signifié six mois avant l'échéance. En 2005, les deux locataires ont demandé l'autorisation de sous-louer une partie des locaux, en raison d'une forte diminution de leur activité professionnelle. Le propriétaire a donné son accord à titre exceptionnel, en soulignant que l'usage prévu ne correspondait pas à celui mentionné dans le bail principal. Les locataires ont alors conclu un contrat de sous-location avec la société X._ SA, laquelle se voyait notamment concéder l'usage de trois bureaux et d'une salle d'archives pour y exercer une activité d'agence immobilière, gérance et courtage immobilier. Le sous-bail était valable du 1er septembre 2006 au 31 mars 2010, puis renouvelable tacitement de trois ans en trois ans, sauf préavis de congé donné six mois à l'avance. Le loyer annuel était fixé à 60'000 fr. A.b Par avis officiel du 24 janvier 2008, le propriétaire a signifié aux deux locataires principaux la résiliation de leur bail pour le 31 mars 2010. Selon les explications données le 12 mars 2008, le congé était motivé par la volonté de redonner aux locaux leur affectation d'origine à l'échéance du bail, la sous-location ayant été consentie à titre provisoire. Les locataires/sous-bailleurs ont répercuté ce congé en résiliant le contrat de sous-location par avis officiel du 8 mai 2008 pour l'échéance du 31 mars 2010. Ils ont précisé que la résiliation était donnée consécutivement à celle du bail principal. La sous-locataire a saisi la Commission de conciliation en matière de baux et loyers du canton de Genève. L'autorité précitée a annulé le congé par décision du 27 novembre 2008. Elle expliquait avoir également annulé la résiliation du bail principal dans une procédure séparée et constatait que le motif du congé n'était pas différent; le propriétaire s'était plaint du comportement d'un employé de la sous-locataire, laquelle l'avait alors licencié; un avertissement aurait été suffisant. B. B.a Le 22 décembre 2008, les locataires/sous-bailleurs ont saisi le Tribunal des baux et loyers du canton de Genève. Ils ont conclu à ce que le congé notifié à la sous-locataire le 8 mai 2008 soit déclaré valable et à ce qu'aucune prolongation du sous-bail ne soit accordée. La sous-locataire a dit se rallier à l'argumentation développée par l'autorité de conciliation et conclu au rejet de l'action. Par jugement du 30 novembre 2009, le Tribunal des baux a déclaré le congé valable et rejeté toute autre conclusion. La sous-locataire a déféré cette décision à la Cour de justice en concluant à l'annulation du congé, subsidiairement à l'octroi d'une première prolongation de bail identique à celle concédée aux locataires pour le bail principal. Par arrêt du 15 novembre 2010, l'autorité d'appel a confirmé la validité du congé, en relevant que celui-ci avait été donné pour un motif bien réel et légitime, soit la résiliation du bail principal. Elle a toutefois reproché au Tribunal des baux de ne pas avoir examiné d'office la question d'une éventuelle prolongation du bail. En conséquence, elle a annulé le jugement et renvoyé la cause aux premiers juges. B.b Le 3 février 2011, le Tribunal des baux a ordonné un échange d'écritures sur la question d'une éventuelle prolongation du sous-bail. La sous-locataire a déposé des conclusions motivées datées du 17 mars 2011, dans lesquelles elle demandait l'annulation du congé, subsidiairement une prolongation de six ans. Elle a en outre requis la production de pièces en mains des locataires. Le Tribunal des baux et loyers a rendu un nouveau jugement le 19 mai 2011. Il a déclaré valable le congé notifié le 8 mai 2008, en soulignant que cette question avait déjà été tranchée par la Cour de justice et qu'il n'y avait pas d'élément nouveau. Il a par ailleurs refusé toute prolongation du bail de sous-location. La Cour de justice a confirmé ce jugement par arrêt du 18 juin 2012. C. La sous-locataire (ci-après: la recourante) saisit le Tribunal fédéral d'un recours en matière civile, dans lequel elle conclut à l'annulation du congé notifié le 8 mai 2008, subsidiairement à l'octroi d'une prolongation de bail de six ans. Elle requiert en outre que son recours soit assorti de l'effet suspensif. Les locataires (ci-après: les intimés) concluent au rejet de la requête d'effet suspensif. L'autorité précédente renonce à se déterminer. Les intimés et la cour d'appel n'ont pas été invités à déposer une réponse.