Un application-level gateway anche noto come application proxy, si comporta come un ponte a livello del traffico applicativo. L'utente contatta il gateway usando un'applicazione TCP/IP e il gateway chiede all'utente il nome dell'host remoto a cui accedere. Quando l'utente risponde e fornisce un valido ID utente e informazioni di autenticazione (ovvero una combinazione valida di nome utente e password), il gateway contatta l'applicazione sull'host remoto e trasmette i segmenti TCP contenenti dati applicativi tra i due endpoint.
Se il gateway non implementa un codice per una specifica applicazione (proxy code) vuol dire che tale servizio applicativo non è supportato dal firewall e allora i pacchetti riguardo quel servizio non vengono inoltrati. Inoltre, il gateway può essere configurato per supportare solo specifiche funzioni di un'applicazione che l'amministratore di rete considera accettabile, mentre nega tutte le altre funzioni.
Gli application-level gateway tendono ad essere più sicuri dei packet filtering.
Piuttosto che cercare di gestire numerose combinazioni possibili che devono essere consentite oppure no a livello TCP e IP, l'application-level gateway ha bisogno solo di scrutare poche applicazioni consentite. Inoltre, è facile fare log e ispezionare tutto il traffico in ingresso a livello di applicazione.
Lo svantaggio principale di questo tipo di gateway è il sovraccarico di elaborazione aggiuntivo su ciascuna connessione. In effetti, ci sono due connessioni di giunzione tra gli utenti finali, con il gateway nel punto di giunzione e il gateway deve esaminare e inoltrare tutto il traffico in entrambe le direzioni.