I have 1.4 million addresses that I need to batch geocode. I can't find a free service to do so. Does anyone know of something out there that I can use? Oh, the service needs to be were I can upload a file in a .txt file formate, not a copy and paste. Copy and paste services crash the 661 mb size file.
You could try Nominatim from OpenStreetMap:
Nominatim (from the Latin, 'by name') is a tool to search OSM data by name and address and to generate synthetic addresses of OSM points (reverse geocoding). It can be found at http://nominatim.openstreetmap.org
You may need to write the wrapper functionality to allow uploading of a text file.
You could try MMQGIS plugin in QGIS. It uses Google API for geo-coding and reverse geo-coding.
Go to MMQGIS tab> Transfer > Geocode CSV from Google.
It takes CSV file as input but output geocoded file and not-found-addresses file in case of no address found on google map. Make sure your CSV is in the right format for this plugin.
SmartyStreets has a Bulk Address Validation Tool for Lists service that is designed to do exactly what you're looking for: You upload a list (.csv, .txt, or .xls) and a few minutes later you download the output files, which give 45 data points, including geocode data, for each address.