Deleting Remembered Wi-Fi Networks in Windows, MAC OSx, and Linux (Debian)

If you attend our WLAN Operations course, one of the things we discuss is Active Scanning.  Your system uses your saved Wi-Fi networks to actively scan for those networks (probing).  There are potential security risks in this, especially with free networks.  Most students conclude they should not remember networks in this way. 

The burning question that remains is: How can I view the list of saved networks easily on my Windows or MAC OSx or Linux system?

And perhaps more crucially: How can I delete these remembered networks?

It is actually not very hard.  Let’s start with WIndows.


Below I have started Windows Powershell: Start> Powershell will cause Windows to search for the program.  You could use the Windows CMD as well, but I have been trying to train myself to use Powershell instead.

Then I have entered the following command:

netsh wlan show profiles

Here is the result:


Look at all those saved Wi-Fi profiles.  The list was truncated BTW.  This means I am probing for all these!

OK – so I now want to clear them ALL out.  Here is the command:

netsh wlan delete profile *

Again here is a screen shot:


Now if I rerun the show profiles they are all empty:




Open Terminal from your launcher.

In the terminal, enter the following command:

networksetup -listpreferredwirelessnetworks en0

You will get a list of the saved Wireless networks.  Here is a truncated example:

Screen Shot 2017 11 25 at 10.43.38 AM

To delete them all, use the following command:

networksetup -removeallpreferredwirelessnetworks en0

You should see something like this:

Screen Shot 2017 11 25 at 10.47.12 AM

And now you can verify the list is not there:

Screen Shot 2017 11 25 at 10.49.10 AM

You can also verify this by going to Settings> Network> Advanced to see the list is empty:

Screen Shot 2017 11 25 at 10.51.02 AM


Linux (Debian)

Open a Terminal Window.

In the terminal, enter the following command:

ls /etc/NetworkManager/system-connections

You will get a list of the saved Wireless networks.  Here is a truncated example:

2019 10 30 14 37 52

You can then delete these one by one, or delete them all with the following example commands:

cd /etc/NetworkManager/system-connections 
sudo rm {wireless_hotspot_name}

 I did find a script that does this.  You can find the Gihub repository here: 

Just copy the below script into into /usr/local/bin/wireless and remember to run command sudo chmod +x /usr/local/bin/wireless

# Review and Remove Wireless Access Points on DEB based Systems
# Make sure to place script in /usr/local/bin 

# CPR : Jd Daniel :: GabelBombe
# MOD : 2013-12-09 @ 12:27:02

# INP : $ wireless -{flag} {arg}



# If the user is not root
if [ "$(id -u)" != "0" ]; then
  echo "This script must be run as root" 1>&2 ; exit 1

declare -r VERSION='1.2b'
declare -r net_dir='/etc/NetworkManager/system-connections'

function list ()
  cd "${net_dir}"

    export count=$(ls |wc -l) # used in drop function

  files=$(ls) # simple ls

  echo -e "\n\tFound ${count} wireless connections"

    for f in $files; do
        echo -e "\t * $f"

function drop ()
  # make sure that we have a working file and directory...
  cd "${net_dir}" ; [ -f "$OPTARG" ] || { echo -e "\n\tConnection does not exist..." ; exit 1; }

  # confirmation for removal
  printf "\n\tDo you want to delete $OPTARG [y/n] " ; read -r resp

    # strtolower, and rm
    if [ 'y' == "$(echo $resp | awk '{print tolower($0)}')" ]; then
      rm -f ${net_dir}/${OPTARG}

function flush ()
  # make sure that we have a directory with files...
  cd "${net_dir}" ; list ; [ 0 -ge "${count}" ] && { echo -e "\tExiting, Nothing to flush..." ;  exit 1 ; }

  # confirmation for removing all files
  printf "\n\tAll Wireless Connections will be removed, continue? [y/n] " ; read -r resp

    # strtolower, and rm
    if [ 'y' == "$(echo $resp | awk '{print tolower($0)}')" ]; then
      rm -f ${net_dir}/*

function version ()
  echo -e "\n\twireless (GNU wireless network purge) v${VERSION}"
  echo -e "\n\tCopyright (C) 2013 Hydra Code, LLC."
  echo -e "\tLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.\n\tThis is free software: you are free to change and redistribute it.\n\tThere is NO WARRANTY, to the extent permitted by law."
  echo -e "\n\n\tWritten by Jd Daniel (GabelBombe) http://github.com/GabelBombe"
  exit 0

function help ()
  echo -e "\n\tUsage: wireless [OPTION]... [FILE]..."
  echo -e "\tList, remove single or flush the contents of your Wireless Network Manager"
  echo -e "\n\tThe options below may be used to perform the above actions, this program will only"
  echo -e "\trun a single flag or parameter at a time. Flag chaining is only available for -d"
  echo -e "\t  -l, --list \t\t List the contents of your 'Network Manager'"
  echo -e "\t  -d, --drop [conn] \t Drop a single (or multiple) wireless connections"
  echo -e "\t  -f, --flush \t\t Flush all wireless connections."
  echo -e "\t      --help \t\t Display this help menu and exit"
  echo -e "\t      --version \t Display version information and exit"
  exit 0


# no long-opts supported except --help
while getopts ':ld:f-:' OPT; do
  case $OPT in

    l) list  ;;
    d) dirList="${dirList} $OPTARG" ; drop  ;;
    f) flush ;;
    -) #long option
       case $OPTARG in

          list)     list    ;;
          drop)     drop    ;;
          flush)    flush   ;;
          help)     help    ;;
          version)  version ;;

    : ) echo -e "\n\tMissing option argument for -$OPTARG" >&2;               exit 1;;
    * ) echo -e "\n\tUnknown flag supplied ${OPTARG}\n\tTry wireless --help"; exit 1;;

shift $(($OPTIND - 1))



Hope all this helps!  You comments and suggestions are welcomed below.


Leave a Comment

Contact Us Here

Please verify.
Validation complete :)
Validation failed :(
Your contact request has been received. We usually respond within an hour, but please be patient. We will get back to you very soon.