Faits: A. Depuis le 1er septembre 2002, Y._ et Z._ sont locataires à Genève d'un appartement qui appartient à la société immobilière X._ SA (bailleresse); le loyer initial était de 17'400 fr. par année (1'450 fr. par mois). Par avis de majoration du 8 mai 2009, la bailleresse a déclaré porter le loyer annuel à 18'720 fr. (1'560 fr. par mois) dès le 1er septembre 2009, charges non comprises; cette majoration était motivée sur une feuille annexée à l'avis officiel. Les locataires ont contesté cette hausse en temps utile devant la Commission de conciliation en matière de baux et loyers; la tentative de conciliation s'est soldée par un échec. La bailleresse a saisi le Tribunal des baux et loyers en validation de la hausse. A titre reconventionnel, les locataires ont demandé une réduction de loyer de 8,26% ensuite de la baisse du taux hypothécaire de 4% à 3,25%; ils ont également requis une réduction en raison des nuisances générées par les travaux de remplacement des colonnes de chute de l'immeuble, prétention qui a fait l'objet d'une procédure séparée. Statuant par jugement du 27 avril 2010 notifié aux parties le 4 mai 2010, le Tribunal a débouté la bailleresse au motif que l'avis de majoration de loyer était nul car mélangeant de façon incompréhensible les motifs absolus et relatifs de hausse. Le Tribunal a par contre partiellement admis la demande reconventionnelle et réduit le loyer de 5,66% (985 fr. par an ou 82 fr. par mois) en tenant compte d'une baisse du taux hypothécaire de 4% en juin 2002 (date de la conclusion du bail) à 3,5% en mai 2009 (date de la hausse litigieuse). Le loyer a dès lors été fixé à 16'415 fr. par année (1'368 fr. par mois) dès le 1er septembre 2009, charges non comprises. La bailleresse a déféré ce jugement à la Chambre d'appel en matière de baux et loyers de la Cour de justice, qui a rejeté l'appel par arrêt du 17 octobre 2011. Appliquant le droit de procédure cantonal, la Chambre a déclaré irrecevables de nouveaux allégués de fait et écarté de nouvelles pièces; sur le fond, elle a fait sienne la motivation des premiers juges. B. Devant le Tribunal fédéral, la bailleresse (ci-après: la recourante) interjette un recours en matière civile, concluant à ce que la baisse de loyer accordée aux locataires (ci-après: les intimés) soit annulée. Ces derniers concluent au rejet du recours. L'autorité précédente se réfère à son arrêt. La recourante a déposé par la suite des observations. Les intimés ont renoncé à faire usage de cette faculté. La présidente de la cour de céans a accordé l'effet suspensif par ordonnance du 1er décembre 2011.