Home | Science | Satellite Finder |     Share This Page

Satellite Finder Home Page

Current Version: 5.5 Build 1422 (11.18.2016)

Typical SatFinder display

Here is Satellite Finder's appearance while running. The user has chosen a state and a city from the provided drop-down lists. The ZIP code and geographical position for that city are acquired from the provided database, then a table of satellite positions is generated.

What is Satellite Finder?

Satellite Finder is a way to accurately point satellite dishes at communications satellites in geostationary orbit.

Simply choose a state and city, or a ZIP code, or enter a geographic position, and Satellite Finder will create a list of satellite positions for that location.

Satellite Finder includes a list of all US ZIP codes and their geographical positions. You may access this database by entering a state and city name or a ZIP code.

Once you have provided a —
  • State and City,
  • ZIP code, or
  • Geographical position,
— Satellite Finder will create a list of common satellites and their sighting angles for your position.

You may easily add new or changed satellites to Satellite Finder's plain-text data files.

Oh, I almost forgot the other good news. Satellite Finder is CareWare — that means no money, now or ever. You just have to care.

NOTE: There is now an online version of Satellite Finder called (surprise, surprise) Satellite Finder Online. It's designed for those in need of a quick result.

NOTE: Satellite Finder now runs on the Android platform — SatFinderAndroid.

Download Instructions
  • For those more comfortable with Windows installation programs, click here to download Satellite Finder as a self-extracting Windows executable containing the SatFinder.jar Java executable (2.0 MB).

  • For all other users on Windows and users of all other operating systems, click here to download the SatFinder.jar Java executable (1.8 MB).

  • The Java source for Satellite Finder is released under the GPL and is located here (4.2 MB).

  • All users need to download and install the current Java runtime engine (1.7 or more recent) at http://java.com.
Installation Instructions
  • If you downloaded the Windows executable option above, run the self-extracting executable.

  • If you downloaded the Java JAR file, place it in any convenient location on your system and create appropriate links.

  • All users should also install an appropriate java runtime engine, as explained above.

  • If you are upgrading from a previous version of Satellite Finder, be sure to delete the data directory located at (user home)/.SatFinder, then run the new version. This step assures that you will get the newest ZIP code data, satellite list and help file. This step is particularly important when upgrading from version 4.4 to 4.5 or newer, at which point the ZIP code database structure changed completely.

  • Be sure to read the provided help file if difficulties arise, or if you wish to add satellites or Earth locations not provided by default.

Running Satellite Finder
  • After installing the program and the Java runtime engine, Windows users can simply click the program icon provided under "Start ... Programs ... SatFinder".
  • Linux and other users, and any who downloaded the JAR file instead of the Windows installer program, can place the JAR file in any convenient location, install the Java runtime engine, and type this from a command shell:

    $ java -jar SatFinder.jar

    This invocation can be made part of a shell script or desktop shortcut.
Common Problems
  • There is really only one common problem people encounter when running Satellite Finder, and it is particularly important when upgrading from version 4.4 to 4.5. To run the new version, users must delete the data directory located at (user home directory)/.SatFinder. This causes Satellite Finder to install new data files, including a new, much larger ZIP code database that is set up differently than the old.

    Again, for emphasis:

    • Delete the directory located at (user home directory)/.SatFinder.
    • Run Satellite Finder.
User Support

  • Sorry — there is no user support. Please do not write to ask for this kind of assistance.

  • Satellite Finder is basically free, and I cannot possibly offer "customer support" for a free program.

  • If you want to update the satellite list that comes with Satellite Finder, you can find out how to do this by reading the help file. That's the tab clearly marked "Help." The satellite list is a plain-text data file, trivial to understand and edit. I really cannot re-release Satellite Finder every time there is a change in the satellite list.

  • To report bugs (not to ask for help), you may post to my message page.

Revision History
  • 11.18.2016 Version 5.5 Build 1422. Changed Windows launch procedure after discovering that Microsoft has abandoned support for Java.
  • 10.27.2016 Version 5.5 Build 1410. Changed clipboard data format from comma-separated-values (CSV) to tab-separated-values (TSV). This change was necessary for locale awareness because some locales use a comma for a decimal separator. This change also makes it easier to import the program's clipboard data into a spreadsheet.
  • 01.19.2016 Version 5.4 Build 1402. Updated satellite list, made some small changes.
  • 05.14.2014 Version 5.3 Build 1395. Replaced/updated magnetic declination computation code, changed to require Java 1.7+ for security reasons.
  • 11.16.2012 Version 5.2 Build 1384. Improved the satellite list table layout and appearance.
  • 09.10.2012 Version 5.1 build 1367. Fixed a problem with southern hemisphere operation.
  • 03.04.2012 Version 5.0 build 1362. Updated the satellite database with current satellite information. Existing SatFinder users are reminded to delete the SatFinder user directory located at (user home directory)/.SatFinder to read the new data.
  • 03.03.2012 Version 5.0 build 1358. Tuned some mathematical routines for greater efficiency.
  • 02.26.2012 Version 5.0 build 1344. Updated magnetic field constants from the NOAA geomagmetic data resource.
  • 02.26.2012 Version 5.0 build 1323. Fixed two small bugs that produced unexpected results for southern hemisphere locations.
  • 02.17.2012 Version 5.0 build 1312. Updated help file to accommodate recent changes.
  • 02.10.2012 Version 5.0 build 1307. Improved display formatting and appearance, restored the clipboard data copy feature.
  • 02.09.2012 Version 5.0 build 1295. Improved appearance and data formatting, added lists of pointing angles for common DishNetwork and DirecTV satellite dish models.
  • 10.02.2011 Version 4.9 build 1267. Enabled antialiased font rendering for better display appearance.
  • 03.31.2010 Version 4.9 build 1255. Updated satellite list and fixed a few small bugs. Users will need to delete the directory located at (user home)/.SatFinder to see the new satellite list.
  • 09.07.2008 Version 4.9 build 1242. Added commas between each field in the data table to simplify exporting the table into a spreadsheet.
  • 11.21.2007 Version 4.9 build 1237. Eliminated abbreviations in favor of full state names. To take advantage of this change, prior users of Satellite Finder need to delete the directory at (user home)/.SatFinder.
  • 11.18.2007 Version 4.8 build 1232. Optimized the database generation code to minimize storage space and runtime.
  • 11.18.2007 Version 4.7 build 1217. After some online research, added more ZIP code locations to the position database.
  • 11.15.2007 Version 4.6 build 1202. Added a note to the help file, and to this page, about the need to delete the data directory located at (user home)/.SatFinder when changing versions.
  • 11.11.2007 Version 4.5 build 1197. Created new ZIP code database with over 10,000 additional codes including Virgin Islands, Puerto Rico, Guam and other locations, plus county information for each location. Fixed a small bug that prevented a state selection from propagating correctly to town, ZIP code and position. Those who have an earlier version of Satellite Finder should delete the directory located at (user home)/.SatFinder to allow the new database to be created.
  • 10.14.2007 Version 4.4 build 1172. Updated the satellite list, reworked the magnetic declination computer for greater accuracy. Those who are already running an earlier version of Satellite Finder and who want the updated satellite list should delete the directory located at (user home)/.SatFinder, then run the new program version.
  • 04.03.2007 Version 4.3 build 1166. Changed to target Java runtime version 1.5. This recent series of changes moves Satellite Finder from Java 1.4.2 -> 1.5, with consequent improvements primarily in appearance and launch speed.
  • 04.03.2007 Version 4.3 build 1164. Updated Java required runtime target to 1.6.
  • 04.02.2007 Version 4.3 Build 1162. Upgraded and recompiled to Java 1.6. Some users will have to update their Java runtime engines at http://java.com.
  • 12.20.2004 Version 4.3 Build 1138. Updated/corrected the default satellite list.
  • 04.09.2004 Version 4.2 Build 1134. Added polarization angle (skew) computation, added one-click option to copy satellite position list to system clipboard.
  • 12.28.2003 Version 4.1 Build 1045. Improved position data entry and display format.
  • 12.08.2003 Version 4.1 Build 1037. Corrected some errors in the help file.
  • 12.07.2003 Version 4.1 Build 1035. Improved the formatting of the data display, rewrote the help file.
  • 12.06.2003 Version 4.0 Build 1000. First public release of the Java version.
Technical note
The mathematics required to generate satellite sighting angles is not terribly difficult, and there are sites that offer this service free online. Notwithstanding this, there is a site that charges US$12 per position for this information. This is a new low, even for the Internet.

Here are my Java functions to compute azimuth and elevation angles and skew angles for satellites:
NOTE: This code is released under the GNU General Public License (GPL). Read the terms of the GPL here.
final double toDeg = 180.0/Math.PI;
final double toRad = Math.PI/180.0;

 * ComputePos(input: (earth) lat (deg), lng (deg),
 * (satellite) satlng (deg),
 * output: Complex(x = az true (deg), y = el (deg))
 * az format: North = 0, East = 90, South = 180, West = 270
 * el format: Horizontal 0, Vertical 90

private Complex computePos(double lat, double lng, double satLng) {
  double dlngr = (lng - satLng) * toRad;
  double az = Math.atan2(Math.sin(lat * toRad), Math.tan(dlngr)) * toDeg;
  az = (270.0 - az) / 360.0;
  az = az - Math.floor(az);
  az *= 360.0;
  double r1 = 6.6107; // ratio synchronous orbit/earth radius
  double clng = Math.cos(dlngr);
  double clat = Math.cos(lat * toRad);
  double v1 = r1 * clat * clng - 1.0;
  double v2 = r1 * Math.sqrt(1 - clat * clat * clng * clng);
  double el = Math.atan2(v1, v2) * toDeg;
  return new Complex(az, el);
 * ComputeSkew(input: (earth) lat (deg), lng (deg),
 * (satellite) satlng (deg),
 * output: double skew (deg)

private double computeSkew(double lat, double lng, double satLng) {
  double alat = Math.abs(lat);
  double dlngr = (satLng - lng) * toRad;
  double v = (Math.atan2(Math.tan(alat * toRad), Math.sin(dlngr)) * toDeg) - 90.0;
  return (lat < 0) ? -v : v;

// The rather simple "Complex" class:

public class Complex {
  private double x;
  private double y;
  public Complex(double x,double y) {
    this.x = x;
    this.y = y;
  public double x() {
    return x;
  public double y() {
    return y;

NOTE: This code is released under the GNU General Public License (GPL). Read the terms of the GPL here.
This is not terribly complex. These functions can obviously be revised for other languages. Remember that southern latitudes and western longitudes should be negative numbers. And be sure to read the provided help file.

These Pages Created and Maintained using    Arachnophilia.

Main Page

Home | Science | Satellite Finder |     Share This Page