Lo scoping statico o lessicale determina lo scope di una variabile solo grazie alla struttura del testo di un programma, indipendentemente dalla sua esecuzione, perciò avviene prima di essa. Il compilatore cerca le variabili prima nel “blocco corrente”, poi nei blocchi che lo contengono, poi nello “scope globale”. Viene usato da Java, Python e la maggior parte dei linguaggi moderni.