Allievo del Carducci a Bologna, coltivò un'amicizia con Giovanni Pascoli nel solco di studi eruditi che lo portarono a numerose pubblicazioni. Dal 1882 fu bibliotecario a Roma e Milano, poi direttore a Catania e a Cremona.
Direttore a Pavia dal 1903, affrontò l'emergenza della guerra organizzando il servizio di distribuzione dei libri per i soldati feriti e ricoverati in collegi e scuole trasformati in ospedali. Si occupò anche della direzione dello schedario dell'Ufficio Notizie che suppliva all'interruzione della comunicazione postale con molte zone del fronte: quell'archivio, conclusa la sua funzione, rimase un documento storico originalissimo.
Fu direttore della Braidense (1922-1925) e membro della commissione per la nuova nomenclatura delle vie e socio e dirigente della Società Pavese di Storia Patria.