Faits : A. D._ et E._ étaient locataires de locaux d'environ 600 m 2 au sous-sol et rez-de-chaussée, destinés à l'exploitation d'un café-brasserie, ainsi que d'un appartement de quatre pièces au 1 er étage du même immeuble sis à Genève; le bail était renouvelable de cinq ans en cinq ans, sauf congé signifié une année avant l'échéance. A.C._ et la société B._ Sàrl ont repris le bail à partir du 1 er avril 2006. Le 14 octobre 2008, la bailleresse a notifié une hausse du loyer annuel net de 112'800 à 116'580 fr., hausse que les locataires ont contestée. Lors de la séance de conciliation du 9 avril 2009, le bail a été prorogé jusqu'au 30 septembre 2013 et le loyer annuel net arrêté à 114'000 fr., avec une clause d'indexation dès le 1 er janvier 2011; le contrat restait inchangé pour le reste. Le 29 juin 2011, à savoir moins de deux ans et trois mois après la fin de la procédure de conciliation, la bailleresse a résilié le bail pour le 30 septembre 2013 par avis officiels accompagnés d'un courrier, adressés séparément à A.C._, à son époux B.C._ et à la société B._ Sàrl. L'avis officiel n'indiquait aucun motif de congé ni disposition légale; le courrier joint exposait qu'aux termes d'investigations et analyses effectuées par la bailleresse, celle-ci était parvenue à la conclusion qu'en raison de l'état général de l'immeuble, la meilleure solution était de le démolir et de le remplacer par une nouvelle construction. La résiliation a été contestée. La tentative de conciliation qui a suivi n'a pas abouti. B. Les époux C._ et B._ Sàrl ont ouvert action contre la bailleresse, concluant principalement à l'annulation de la résiliation, subsidiairement à la prolongation du bail pour une durée de six ans; ils ont argué du fait que le congé avait été donné durant la période de protection de trois ans (art. 271a al. 1 let. e CO). Dans sa réponse, la bailleresse a conclu à l'octroi d'une unique prolongation au 31 décembre 2014; elle justifiait la résiliation par un besoin urgent pour elle-même ou ses proches (art. 271a al. 3 let. a CO) et alléguait un besoin urgent de récupérer l'objet loué pour pouvoir détruire et reconstruire l'immeuble; lors des plaidoiries, elle s'est prévalue de justes motifs (art. 271a al. 3 let. e et art. 266g CO). Le Tribunal des baux et loyers du canton de Genève (2 ème Chambre) a instruit la cause et notamment entendu des témoins au sujet de l'état du bâtiment. Par jugement du 29 octobre 2013, il a annulé le congé. La bailleresse a fait appel. Par arrêt du 6 août 2014, la Chambre des baux et loyers de la Cour de justice a confirmé l'annulation du congé. C. A._ SA, devenue bailleresse ensuite de fusion avec la bailleresse antérieure, a interjeté un recours en matière civile au Tribunal fédéral, concluant principalement à ce qu'il soit constaté que la résiliation donnée le 29 juin 2011 est valable et que le bail prendra fin le dernier jour du sixième mois complet suivant la notification de l'arrêt de la cour de céans. Les intimés concluent au rejet du recours. L'autorité précédente se réfère à son arrêt.