Virtual Local Area Networks (VLANs) segment network traffic at Layer 2 to improve security, reduce broadcast domains, and organize logical network boundaries. However, as networks evolve through decommissioning projects, subnet migrations, or device replacements, unused VLANs frequently linger in the switch configuration. Removing obsolete VLANs reduces operational clutter, prevents unintended bridging, and reclaims administrative overhead.
Deleting a VLAN on a Cisco Catalyst or Cisco IOS/IOS-XE switch is straightforward, but doing so without verifying port assignments can inadvertently sever connectivity for connected hosts. The following sections walk through the exact CLI commands, batch removal templates, access port remediation steps, and official command syntax needed to safely remove VLANs from your environment.
Table of Contents
Step-by-Step Guide: Deleting a Single VLAN via CLI
On Cisco switches running standard Cisco IOS or Cisco IOS-XE, VLANs are defined in the global configuration or the local VLAN database. The standard method to remove a single VLAN is using the no vlan command in Global Configuration mode.
Step 1: Access Privileged EXEC Mode
Log in to your switch via console, SSH, or Telnet, and enter Privileged EXEC mode using your administrative credentials:
Switch> enable
Switch#
Step 2: Enter Global Configuration Mode
Navigate from Privileged EXEC to Global Configuration mode:
Switch# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#
Step 3: Remove the Target VLAN
Negate the VLAN configuration by running the no vlan command followed by the specific VLAN ID (for example, VLAN 50):
Switch(config)# no vlan 50
Switch(config)# exit
Step 4: Verify VLAN Removal
Confirm that the VLAN is no longer listed in the switch’s active database:
Switch# show vlan brief
Inspect the output. VLAN 50 should no longer appear in the table. Alternatively, check the specific VLAN ID:
Switch# show vlan id 50
% VLAN 50 not found in current VLAN database
Step 5: Save the Running Configuration
If the switch is running in VTP Transparent mode or storing configuration locally, commit your running changes to NVRAM:
Switch# copy running-config startup-config
Destination filename [startup-config]? [Enter]
Building configuration...
[OK]
Batch Removal: Deleting Multiple VLANs or VLAN Ranges
When decommissioning an entire site, department, or testing network, removing VLANs individually is inefficient. Cisco IOS supports deleting multiple distinct VLANs and contiguous ranges in a single command string.
! ==============================================================================
! CISCO IOS TEMPLATE: BATCH VLAN DELETION
! ==============================================================================
! Enter configuration mode
configure terminal
! Option A: Delete non-contiguous VLANs (comma-separated)
no vlan 10, 20, 30, 40
! Option B: Delete a contiguous range of VLANs (hyphen-separated)
no vlan 100-110
! Option C: Delete mixed ranges and individual VLANs simultaneously
no vlan 15, 25, 100-105, 200-210
! Exit and commit
end
write memory
Note: Ensure there are no spaces between hyphens or commas in older IOS versions (e.g., use 10-15, not 10 - 15), as syntax parsers on legacy Catalyst switches may reject spaced intervals.
Global Deletion vs. Trunk Pruning: Understanding the Impact
A common point of confusion is the distinction between deleting a VLAN globally (no vlan <id>) and removing a VLAN from a trunk interface (switchport trunk allowed vlan remove <id>). While both stop traffic for that VLAN across specific paths, their operational scope is completely different.
| Evaluation Criteria | Global VLAN Deletion (no vlan <id>) | Trunk VLAN Removal (switchport trunk allowed vlan remove <id>) |
|---|---|---|
| Configuration Mode | Global Configuration: (config)# | Interface Configuration: (config-if)# |
| VLAN Database Status | Completely purged from vlan.dat and the local switch database. | Remains active in the local VLAN database. |
| Trunk Link Impact | Ceases carrying traffic across all switch trunks because the VLAN no longer exists locally. | Stops forwarding traffic only across the specific trunk link configured. |
| Access Port Impact | All access interfaces assigned to this VLAN become inactive and stop passing traffic. | No impact on local access ports assigned to this VLAN. |
| VTP Propagation | Propagates deletion to all switches in the VTP domain (if running VTP Server mode). | Local interface setting only; does not alter VLAN topology on other switches. |
| Primary Use Case | Permanent decommissioning of a broadcast domain switch-wide. | Traffic engineering, bandwidth preservation, and security boundary isolation between switches. |
FAQ: Handling Inactive Access Ports After VLAN Deletion
What happens to access ports when their assigned VLAN is deleted?
When you delete a VLAN globally, any access port statically assigned to that VLAN is not automatically returned to default VLAN 1. Instead, the port becomes inactive or “orphaned.”
The physical link may stay physically up/up, but the port cannot forward or receive any Ethernet frames. If you issue the show interfaces status command, the VLAN column for that interface will display as inactive:
Port Name Status Vlan Duplex Speed Type
Gi1/0/12 Server-Port connected inactive a-full a-1000 10/100/1000BaseTX
How should you remediate or prevent inactive ports?
To prevent unintended downtime, audit and reassign all associated access ports before issuing the no vlan command:
- Audit ports currently using the VLAN:
text
Switch# show vlan id 50
Note every port listed under thePortscolumn. - Reassign ports to an active VLAN or disable them:
text
Switch(config)# interface range GigabitEthernet 1/0/12 - 14
Switch(config-if-range)# switchport access vlan 10
! Or place them administratively down:
! Switch(config-if-range)# shutdown - Remediating orphaned ports post-deletion:
If the VLAN was already deleted, locate all orphaned ports and map them to a valid VLAN:
text
Switch# show interfaces status | include inactive
Switch(config)# interface GigabitEthernet 1/0/12
Switch(config-if)# switchport access vlan 10
FAQ: Reserved VLANs and the “VLAN 1 Cannot Be Deleted” Error
Why does Cisco IOS reject deleting VLAN 1?
If you attempt to delete VLAN 1 using no vlan 1, the switch rejects the command and returns the following error:
Switch(config)# no vlan 1
% Default VLAN 1 may not be deleted.
In Cisco switching architecture, VLAN 1 is the factory default Ethernet VLAN. It serves as the baseline internal control plane channel for critical Layer 2 protocols, including Cisco Discovery Protocol (CDP), Port Aggregation Protocol (PAgP), Dynamic Trunking Protocol (DTP), and Spanning Tree Protocol (STP). Because the hardware backplane relies on VLAN 1 to process these supervisory frames, Cisco IOS strictly prohibits its deletion or modification.
Can legacy VLANs 1002 through 1005 be deleted?
No. VLAN IDs 1002 through 1005 are reserved for legacy transit networks:
– 1002: fddi-default
– 1003: token-ring-default
– 1004: fddinet-default
– 1005: trnet-default
Attempting to delete any of these IDs generates an error:
Switch(config)# no vlan 1002
% VLANs 1002-1005 are reserved and cannot be deleted.
These IDs cannot be renamed, modified, or purged from the database, even if your network utilizes only standard Ethernet.
Resetting the VLAN Database: How to Delete vlan.dat from Flash
On Cisco Catalyst switches, VLAN definitions are not stored inside startup-config when operating in VTP Server or Client mode; they are maintained in a binary file called vlan.dat located in the switch’s local flash memory. If you are preparing a switch for decommissioning or a factory reset, simply erasing the startup configuration with write erase will not wipe user-created VLANs. You must delete the vlan.dat file directly.
Step 1: Verify the Presence of vlan.dat
In Privileged EXEC mode, inspect the root directory of flash storage:
Switch# dir flash:
Locate vlan.dat in the directory list.
Step 2: Delete the vlan.dat File
Execute the delete command targeting flash memory:
Switch# delete flash:vlan.dat
Delete filename [vlan.dat]? [Press Enter]
Delete flash:/vlan.dat? [confirm] [Press Enter]
Note: On modular Catalyst switches with dual supervisors, repeat this process for the secondary supervisor (e.g., delete slaveflash:vlan.dat or delete bootflash:vlan.dat).
Step 3: Clear the Startup Configuration (Optional)
If you are performing a full device reset, erase NVRAM to eliminate any interface-level VLAN associations:
Switch# erase startup-config
Erasing the nvram filesystem will remove all configuration files! Continue? [confirm] [Press Enter]
Step 4: Reload the Switch
Reboot the device to force Cisco IOS to initialize a clean, default VLAN database:
Switch# reload
Proceed with reload? [confirm] [Press Enter]
Upon boot, the switch will recreate an empty vlan.dat file containing only default VLANs 1 and 1002–1005.
Official Command Reference & Documentation
The commands covered above adhere to standard Cisco Catalyst command reference guidelines across major software trains, including Cisco IOS, IOS-XE, and Catalyst Switch Software Releases.
================================================================================
CISCO CATALYST COMMAND SPECIFICATION: VLAN DELETION
================================================================================
Command Syntax:
no vlan { vlan-id | vlan-range }
Command Modes:
Global configuration mode: Switch(config)#
Parameters:
vlan-id : Integer from 2 to 4094 representing an existing VLAN.
vlan-range : Contiguous (e.g., 10-20) or noncontiguous (e.g., 10,20,30)
list of VLAN IDs.
Hardware / Software Compatibility:
- Cisco Catalyst 2960, 3560, 3750, 3850 Series
- Cisco Catalyst 9200, 9300, 9400, 9500, 9600 Series
- Cisco Industrial Ethernet (IE) Series
- Operating Systems: Cisco IOS Software Release 12.2+, Cisco IOS-XE 16.x/17.x
Execution Privilege:
Privilege Level 15 (enable) required.
================================================================================
For advanced deployments involving Virtual Switching System (VSS), StackWise, or VLAN Trunking Protocol Version 3 (VTPv3), consult the official Cisco Catalyst Switching Software Configuration Guide corresponding to your specific IOS-XE release on the official Cisco Support & Documentation portal.
Conclusion
Deleting a VLAN on a Cisco switch takes only a single CLI command, but proper execution requires understanding the underlying network dependencies. Always audit your access ports using show vlan id <id> before issuing no vlan <id> to prevent ports from falling into an inactive state. If your goal is simply to prevent traffic from traversing an inter-switch uplink, prune the VLAN from the trunk using switchport trunk allowed vlan remove rather than deleting it globally. Finally, remember that for complete switch repurposing, deleting vlan.dat from flash memory is essential to eliminate custom broadcast domains entirely.











Comments