Jeffrey’s “Export to Google Drive” Lightroom Plugin

This plugin allows you to export images from Lightroom directly to your Google Drive account.

This plugin works in Lightroom Classic, and older versions as far back as Lightroom 3, though some features depend on the version of Lightroom.

The same download works for both Windows and Mac. See the box to the upper right for the download link (in orange) and installation instructions.

Please see the FAQ and known issues before reporting bugs.

It supports both Export and Publish.

Google Plus (G+)

Google doesn't yet provide an API for third-party apps to upload to Google Plus, but you can sort of get some G+ interaction via uploading through Google Drive with this plugin, or through PicasaWeb.

Availability

This plugin is distributed as “donationware”. I have chosen to make it available for free — everyone can use it forever, without cost of any kind — but unless registered, its functionality is somewhat reduced after six weeks.

Registration is done via PayPal, and if you choose to register, it costs the minimum 1-cent PayPal fee; any amount you'd like to add beyond PayPal's sliding fees as a gift to me is completely optional, and completely appreciated.

Note: a Lightroom major upgrade, such as from Lr6 to Lr7 (or the equivalent under the hood for the Lightroom Classic subscription) de-registers the plugin in the upgraded version, so if you want to maintain registration, a new ($0.01 if you like) registration code is needed in the upgraded version. It makes for a hassle every couple of years, I know. Sorry. See this note for details.

For details on plugin registration and on how I came into this hobby of Lightroom plugin development, see my Plugin Registration page.

Version History
( Update Log via RSS )

20171019.55

Oops, more Lr7 stuff.

20171019.54

Updates for Lr7

Better handle some character-encoding issues related to template tokens.

Allow the "If Exists" feature of Templat Tokens to work with the PluginProperty token.

Update registration support to handle a stupid bug at PayPal that PayPal refuses to fix )-:

20170710.53

Fixed a bug introuded the other day in template tokens, related to Windows filenames.

20170621.52

Added the Newline template token.

Enhanced the FolderName token

Added the "only if it has a value" feature to template tokens.

20170309.51

Got around a situation where Lighroom would crash duing an export of large images.

Better dialog real-estate managment for the meatadata section.

Fixed a bug with the keyword tables in the LUA token.

Added Weekday, Wday, weekday, and wday to the list of template tokens that my plugins understand.

Switch the log-sending mechanism to https.

Added "ISO8601Date" to the template tokens that my plugins understand.

Added the following tokens to the template tokens that my plugins understand: Artworks, ArtworkTitle, ArtworkCopyright, ArtworkSource, ArtworkCreator, ArtworkDateCreated, ArtworkInventoryNum

20160823.50

There seems to be a bug at Google whereby they ignore the image description at times, so we now check to see whether the description actually used for a photo is the one we sent, and if not, we send it again. It seems so far that they're not ignoring it when we send it alone (without the photo) the 2nd time.

Some updates to support Lr2. Lr2 is sufficiently old that I will drop support for it soon.

Added the following tokens to the templates that my plugins understand: FileModYYYY, FileModYY, FileModMM, FileModDD, FileModHH, FileModMIN, FileModSS, FileYYYY, FileYY, FileMM, FileDD, FileHH, FileMIN, FileSS, FilenameNumber.

20160327.49

Added ChildOf and DescendantOf filters to the {Keywords} and {KeywordsAll} template tokens that my plugins understand.

Fixed a bug with the 'edit saved credentials' dialog.

Fixed how custom {People} formatting works with people keywords that have no birthday associated with them.

Try to avoid yet another place where Lightroom gets hung because it can't handle certain kinds of dialogs at the same time.

Fix to get around a Mac display issue with Lr6 on OSX.

Added Russian-langauge support for the People-Support {People} tag.

20151019.48

Updated the Caption part of the dialog to show up to three lines of text, and the full text in the tooltip.

Added {SpeedKPH} and {SpeedMPH} to the list of template tokens supported by my plugins.

The {People} token wasn't working properly for some keywords without a registered birthday.

20150517.47

Fixed the "SpecPeople:259: attemt to index al nil value" error.

Clicking on the example caption in the export dialog now brings up a dialog showing the whole example caption, which is useful to see the full thing when it contains multiple lines.

Fixed an assert-failure bug that could happen when editing a collection's settings.

20150206.46

In the POODLE-vunerability dialog, display a raw URL of a page on my site that discusses the issue, so that folks can be independently sure that the dialog is indeed from me and not malware.

20150202.45

Fix to the date_diff() function supported by the LUA template token.

Updated the camera-name code to try to guess the actual camera model of Hasselblad H5D files, since in their infinite wisdom Hasselblad decided to encode three distinct models with the same internal code, making it impossible to know for sure what camera produced a given image file.

20141219.44

Added an "Export Location Override" section to the Publishing Manager dialog (when editing an existing publish service) that allows you to change the Export Location. I don't know why Adobe doesn't let you change it... it seems arbitrary.

Use a compressed view on the Plugin Extras dialog if the screen is not very tall.

Added extra logging to debug why Lightroom might fail to render for export.

20141022.43 Figured out a way, I think, to work around a bug (in Lightroom? Google?) that caused some uploads to fail with "Invalid multipart request with 0 mime parts.".
20141019.42

Google seems to have silently changed their API, and this caused the album list to appear empty for most users. I haven't been able to find any documentation on what changed, but have fudged something that seems to be working.

Windows Only: Add a one-time check for the POODLE security vulnerability, and alert the user if it exists.

20141010.41 Better error reporting with the visit-collection item in Publish.
20140923.40 Added the LrMD5, LrLocalization, LrSystemInfo, and LrMath packages to the {LUA} template token.
20140922.39 When deleting from a publish collection, properly maintain the 'Uploaded to...' metadata field.
20140902.38 New build system
20140802.37

Made the {GPSAltitude}, {Altitude}, and {GPSCoordinates} tokens subject to the geo-privacy settings like the other geo-related tokens.

20140731.36 Registration fix for Lr5.6
20140720.35 More Creative-Cloud support.
20140715.34

Fixed an issue with Creative-Cloud revalidation.

20140712.33

Lr5.5 and later Creative-Cloud installs can now revalidate themselves if needed.

20140710.32 Sigh, had a bug in the Creative-Cloud support.
20140708.31

Now supports Lr5.5+ Creative-Cloud Installs.

20140704.30 Sigh, introduced an error for some folks with the rebuild the other day.
20140630.29 Build-system update
20140613.28

Added date_diff() and raw_time_diff() functions to the special {LUA} token understood by the plugin.

20140605.27

A missing 'automatic destination' could cause the plugin to crash.

20140509.26

Added new tokens to the template language the plugin understands: LrVersion, LrVersionMajor, LrVersionMinor, LrVersionRevision, LrVersionBuild, Location, CatalogName, CatalogPath, OperatingSystem, OS

Added new token filters: NS and LO

20140423.25 Allow raw files to be uploaded as well.
20140422.24

Fixed a bug in the "smoother revalidation" stuff recently added.

20140418.23

Added a new "Location Privacy" section to the Exprt/Publish dialogs.

Updated the location-based tokens in the template language the plugin uses — City, State, Country, Location, Latitude, Longitude — to respect new privacy options in the Export/Publish dialogs, and in the resend-metadata dialog. You can override those options on a case-by-case basis with the evenIfPrivate filter.

Added locationIsPrivate variable to the environment available to the LUA token.

The {Empty} template token wasn't working properly.

Added the ability to refresh Google-Drive urls of previously-uploaded photos.

Make the revalidation process smoother, especially for folks using Lr5.4 and later.

20140204.22

Enable a new feature internal to Lr5 for large exports that keeps the CPU from running too far ahead of the upload. Prior to this, Lightroom would go ahead and peg the CPU to pre-render all the images even if they weren't being uploaded at nearly the same speed. Now Lightroom pauses the behind-the-scenes rendering if it has gotten too far ahead of the upload.

Added (to File > Plugin Extras) the ability to check the remote status to see whether uploaded photos are still there, and clear out data from the catalog when they are not.

20131011.21

Gave the Publishing Manager UI some attention on Windows.

Added the “:EMBED” token filter to the template language.

20130926.20 Oops, fix a bug introduced in the previous update
20130925.19

Added a bunch of tokens to the preset templates supported: ExportFormat, ExportColorSpace, ExportBitDepth, ExportQuality, ExportSharpeningLevel, ExportSharpeningMedia, IpernityUrl, GoogleDriveUrl, and TumblrUrl.

The token-examples dialog had been broken. Also deprecated Folder and Path tokens in preference to FolderName and FolderPath tokens.

20130909.18

Work around a Lightroom bug concerning the determination of whether a photo is offline.

20130820.17

Made big updates to the "Export with Smart Previews?" section; you can now pick to be asked whether to export via Smart Previews, and can differentiate between when the Smart Previews are "good enough" for an export and when they are not.

Fixed the KW/KWE tables in template tokens; they had been broken when using load for the script.

Better handle very long user account names, so that the [Logout] button doesn't get cut off of the Export dialog.

20130718.16

Added an "Ask" option to the "Export with Smart Previews?" section, so one can be alerted to the situation at each export.

Moved the "Export with Smart Previews?" dialog section to a more-logical place in the order.

20130701.15

Work around a bug that causes the export-related progress bar to not show up right away.

20130629.14 Removed the "repopulate now" link from the publish-collection list because repopulation is not (yet) supported.
20130613.13 Better support for plugin revalidation.
20130612.12 Creating a new publish album could sometimes fail
20130611.11 Sigh, previous update for Lr5 broke things for the Lr5 beta.
20130611.10 Yet another Lr5 update
20130610.9

Better logging to try to understand catalog-write-access contention under Lightroom's hood.

Remove restrictions on what kind of file Google Drive can accept... they accept anything.

20130520.8

Added the ability in Lr5 to export images even if the master image file is not available, so long as there's a smart preview available.

20130511.7 When creating a publish collection from the context menu, respect the publish service's flat vs. hierarchical naming setting.
20130506.6 Handle the need to reauthorize access after it having been revoked by the user.
20130501.5 Update for Lr5
20130412.4 Previous build didn't load properly.
20130412.3

Can now have Publish collections renamed to match folder names changed at Google.

20130406.2

Handle large lists of folders without crashing.

Show only folders that you have permission to upload to, and that are not in the trash.

Show the name of the owner if it's not you.

The folder refresh is now more efficient.

Allow the list to be sorted by owner.

20130327.1 initial public release.

All 27 comments so far, oldest first...

Could you post some screenshots, please explain what the benefit is of using this versus just exporting to your syned G Drive folder? Also why not link to your plugins on the root of your website http://regex.info/ ?

I’ve not used a synced Google Drive folder, but perhaps there’s not much benefit other than not having to host a copy on your local machine. Good idea about the root of my website… I’ve added a Lightroom link, thanks. —Jeffrey

— comment by Kieran Mullen on April 18th, 2013 at 1:33am JST (4 years, 8 months ago) comment permalink

I tried Kieran’s suggestion, of using Lightroom Hard Drive to connect to Google Drive – it seemed very sensible. I was wishing I’d thought of it. Uh oh. On the web you get “Preview not available” – there’s lots of discussion around that. The jpegs are visible in Google Drive in Windows – but seem to become zero byte jpegs as far as the web version is concerned.

— comment by John Samuel on May 16th, 2013 at 3:40am JST (4 years, 7 months ago) comment permalink

Hello, as there are many users moving from Flickr to ipernity these days, did not you think about Publish/export plugin for ipernity?

I’m thinking about it… not sure at this point. My cursory look at Ipernity is that they’re Flickr with all the old restrictions that Flickr just ditched, so I don’t see the appeal, but I guess to each their own. —Jeffrey

— comment by Michal on May 26th, 2013 at 12:24am JST (4 years, 7 months ago) comment permalink

I’d really like to be able to mirror my whole Lightroom folder structure on Google Drive. Each time I import new images I would like to set Google Drive as a destination for the “make a second copy to’ option in the import dialog. It would then create the same folder I am creating on my local drive and then upload all my RAW files to Google Drive. Idelly I’d like to do this without saving a copy locally in the Google Drive sync folder. Just a thought 🙂 And thanks for all your work on this lightroom stuff.

The plugin has no hooks into the import workflow, so there’s nothing I can suggest here that doesn’t involve submitting a feature request to Adobe. —Jeffrey

— comment by Brian Jones on June 22nd, 2013 at 12:01am JST (4 years, 6 months ago) comment permalink

What “somewhat reduced” means should be explained before download.

— comment by R1 on November 23rd, 2013 at 6:42pm JST (4 years ago) comment permalink

When I tried uploading raw files, I get this following error
“Google Drive does not accept “.cr2” files for upload; aborting.”
However, I am able to upload RAW files directly through Google Drive web interface. Is this a plugin limitation?

It was just something I’d overlooked. Fixed. Thanks for the report. —Jeffrey

— comment by Sri on April 23rd, 2014 at 11:29am JST (3 years, 8 months ago) comment permalink

When I try to publish with the publish service I get the error: Unexpected HTTP status from Google: 400. Invalid multipart request with 0 mime parts.
After some experimentation I removed the one image to be updated in stead of uploaded and then it worked.
Any Idea what could be the cause?

I believe this is a Lightroom bug… I’ve heard of it from time to time, where the plugin prepares everything to send to Google, but Lightroom sends only the header then tells Google it’s done. I’ve reported it to Adobe; beyond that, I can only cross my fingers and hope it doesn’t rear its ugly head very often. —Jeffrey

— comment by Bart Luyckx on May 1st, 2014 at 9:57pm JST (3 years, 7 months ago) comment permalink

I’m also getting the ‘Invalid multipart request’ error when using this plugin. Uploading new images works fine, but I am unable to update any existing images. No combination of ‘Mark as up-to-date’ or ‘Mark to Republish’ or deleting the existing image on Google Drive seems to make this work.

Being un-able to re-publish sort of defeats the purpose of a publish plugin, at this point I have to export them by hand and manually re-upload them to google drive.

Are there any work-arounds for this?

This has been a frustrating one, but I might have just figured a workaround, trying the upload via a different method if the first fails. The fix is a blind one, since I can’t reproduce the error in the first place, but I just uploaded version 20141022.43 with it, so please give it a try… &mash;Jeffrey

— comment by Eric on October 21st, 2014 at 8:34am JST (3 years, 2 months ago) comment permalink

Jeffery, you work is awesome. I use many of your plugin’s and they save me much time and enable me to some trickery with our http://www.SelfieBoooth.com

Anyway, was just wondering if you have any plans to have essentially the same as your G+ publisher for Dropbox?

I’m looking for a way to not have files stored locally and so I don’t have to use a web browser to get them up.

Thanks for your time.
alloyphoto already has a Dropbox plugin for Lightroom. —Jeffrey

— comment by Nick on November 6th, 2014 at 12:06pm JST (3 years, 1 month ago) comment permalink

I have used your Collection Publisher previosly to sync some photos to Google Drive. Works fine, but of course requires me to have a copy of the file on local disk – in the Google Drive folder structure. A little waste of space. So I looked into this publisher instead, which has a direct link to Drive.

But to me it seems to have a different, “backwards” workflow – I know have to create the folder on Google Drive, then update the folder list (quite slow) and then it is possible to add that folder as a Publish Folder.

Is there any reason it cannot work similar to Collection Publisher instead, ie just “Create (Smart) Collection” in Lightroom – and for it selects a folder name on Drive, which is created if needed?

It’s possible, but not something I’ve implemented yet. It’s on the todo list. —Jeffrey

— comment by Christer on December 10th, 2014 at 6:24am JST (3 years ago) comment permalink

Hi,

do you have any plans for enable lightroom export support for the new google-service https://photos.google.com ?

Best regards,
Daniel

It’d be high on my priority list if Google were to release an API for it, but as far as I can tell they haven’t yet. Considering that they haven’t released one for Google Plus yet, it may be a long wait…. —Jeffrey

— comment by Daniel on May 31st, 2015 at 2:00am JST (2 years, 7 months ago) comment permalink

Hi Jeffrey,

I have your Google Drive plugin installed on my PC laptop, has been working fine. Just moved my LR6 catalogs from one internal drive to another (D to C, to take advantage of the latter being an SSD and thus faster). Now every time I open LR I am getting the message “Lightroom need to configure your system for the jf Google Drive plug-in.” I either need to say OK or cancel. This was not happening before. How do I make it stop happening?

Thanks,
Steve (California)

Please see this FAQ —Jeffrey

— comment by Steve on July 29th, 2015 at 5:36pm JST (2 years, 5 months ago) comment permalink

Will this app work for me if I want to do the following: Use google drive to store my catalog and photos that I use in Lightroom? I don’t have the space to keep them on my internal hard drive . I don’t like using an external HD for anything beyond backup b/c I have to drag it around with me to have access to my photos. I’m new with Lightroom and am looking for a good cloud storage that enables me to keep my raw images on it so that lightroom can readily access them. Is that what this app does? (Sorry in advance for simple minded questions).

No, that’s not what this plugin does. You should consult with a Lightroom-workflow specialist, but I’d guess your best bet would be to use an external hard drive to store the masters, but use Smart Previews in Lightroom so that you don’t have to have the external hard drive attached except when adding new photos. —Jeffrey

— comment by nancy on November 1st, 2015 at 11:01am JST (2 years, 1 month ago) comment permalink

I am interested if your plugin will allow one to preserve the folder hierarchy in google drive? If not, do you have any suggestions that may be of assistance? Thank you.

Regards,
Mark

The easiest way would be to use my Folder Publisher plugin, which is explicitly designed to preserve the folder hierarchy, to write to your local Google Drive folder. —Jeffrey

— comment by Mark on November 30th, 2015 at 12:38pm JST (2 years ago) comment permalink

Is it possible to upload to Google Photos instead of Drive?

Not directly; Google has not yet released an API that would allow it. You can get photos onto Google Photos via my PicasaWeb plugin, but they’ve announced that PicasaWeb will shut down soon, so there’s little point in adopting it now. —Jeffrey

— comment by christopher on February 22nd, 2016 at 3:56pm JST (1 year, 10 months ago) comment permalink

Does your plugin work with Google Photos? If so, how?

Google has no API for third-party software to access Google Photos. Two of my plugins (Google Drive and PicasaWeb) deal with parts of Google, but if and how Google allows those parts to interact with Google Plus, Google Photos, etc. is not something I’ve fully followed. —Jeffrey

— comment by Oliver on May 8th, 2016 at 4:37am JST (1 year, 7 months ago) comment permalink

I’m trying to set up this plugin to mirror my folder hierarchy in Lightroom. (I have my photos organized by year and then subfolders by months).
How do I set up the plug-in to create and publish photos that correspond to my Lightroom folders?
I’ve tried following the set up for Zenfolio (http://regex.info/blog/2008-10-06/956), but I don’t see the “auto dest” button when I try to set up Google Drive plugin.

PS: I use your Picasa plugin and love it. Thanks!

It probably makes more sense to use my Folder Publisher plugin that just happens to write to your Google Drive folder. —Jeffrey

— comment by Noah on June 7th, 2016 at 9:50am JST (1 year, 6 months ago) comment permalink

I’m getting an error every time I publish to google drive. It says “Unexpected HTTP status from Google: 404.” The plugin was working fin earlier today, but now this is all I get.

A 404 means “page doesn’t exist”… they’re likely just having temporary issues…. —Jeffrey

— comment by Scott J Simmons on July 6th, 2016 at 5:57am JST (1 year, 5 months ago) comment permalink

Great plug-in. I am seeing a possible bug: when I publish an image with a non-empty Caption field, the contents of the Caption is used for the Google Drive “Image Description” regardless of the template selected in the “Metadata Management” panel. When I delete the contents of the caption in LR and re-publish, it goes back to using the correct fields. Seems like Caption is stomping on all other fields at publish time.

Indeed, it seems so. Good find. Google simply seems to be ignoring the description that the plugin sends. It turns out that if I resend the metadata (without the image), it takes it, so I have the plugin do that now. —Jeffrey

— comment by Ewan on August 23rd, 2016 at 9:18am JST (1 year, 4 months ago) comment permalink

Hi Jeffrey,
Just started using the plugin… works great!

By the way, some of the picture I want to upload has gone in a wrong status: the metadata “uploaded to google” stated “yes” and there is the picture URL, but the file is not available on Google Drive, so any attempt to upload these files give a 404 error.

I cannot manually change plugin metadata so I don’t know how to solve. Can you please give an help?

Thanks!

You can clear out the entry for these photos via “File > Plugin Extras > Google Drive Extras > Clear” —Jeffrey

— comment by emmeerre on September 4th, 2016 at 2:05am JST (1 year, 3 months ago) comment permalink

Hi Jeffrey,
This plug-in seems very interesting for me. However it takes a very long time when I edit settings. The Lightroom Publishing Manager window opens, but it shows “no answer” for a very long time; during all this time Lightroom is totally blocked. After several minutes everything gets normal. I have the feeling that during all this time the plug-in is scanning my Google Drive folders, but this is just a feeling: I really don’t know. Is it normal to have this very long waiting time ?
Thanks.
Michel (from France)

I’m not sure exactly what “no answer” means, but what you describe sounds unexpected, and like a bug in Lightroom. You should be able to interact with the Publishing Manager immediately. Does it happen with a fresh, empty catalog? Does it happen when using one of the built-in plugins? —Jeffrey

— comment by Michel D on September 6th, 2016 at 1:19am JST (1 year, 3 months ago) comment permalink

Is there a way to allow for different resolutions to be uploaded to different folders in drive? I have one folder for lower res and one for higher res?

Yes, if you make another Publish Service (and replicate the folder hierarchy inside). Unfortunately, you can’t do it from within a single Publish Service. —Jeffrey

— comment by Aaron Spain on September 12th, 2016 at 2:37pm JST (1 year, 3 months ago) comment permalink

Just updated and registered, restarted.
When I try to upload to G Drive, I get this message “Lightroom couldn’t render a copy from the master image
“/Volumes/ThunderBay IV/LightroomFiles/2016/2016-10-03 Ohio/20161003-313.dng”
because it can’t access the file. Perhaps it’s been deleted or is on a disk that’s currently offline?”
Lightroom itself is fine and the files are where they should be.
Can you help?
Thank you!

It could have been a temporary hiccup… the plugin is just interpreting and presenting the cryptic error message Lightroom itself generates. —Jeffrey

— comment by Harlan Chapman on October 13th, 2016 at 9:55am JST (1 year, 2 months ago) comment permalink

I used “Which folder would you like in this Google Drive Publish Service” window with no problem filtering down folder I need to be in my lightroom. But since I moved from Dropbox to Drive recently I have much more folder to filter down now and it takes very long for the list to update (5-10 minutes) for each task. Is there something I can do to speed it up ?

Unfortunately, nothing comes to mind… just try not to refresh the list unless you really need to, I guess. —Jeffrey

— comment by Martin on January 15th, 2017 at 3:28am JST (11 months ago) comment permalink

Hi Jeffrey. Great plugin – thanks a lot.
Please let me know how I can support this usecase with your plugin.
All my pictures from LR go to Google Photos and show up well. But say I take some pictures today on my iPhone and use the Google Photo App on iPhone to backup the images also to Google Photos. I see them in Google Photos and Drive on website, but there is no reverse connection to bring them back to Lightroom.
I can do this with Lightroom CC and Lightroom iPhone app, but I was trying to see a way by which I can do this using the Google infrastructure so that I don’t have to do CC subscription.
Is this possible?

I’m not familiar with how Google Drive might connect with Google Photos, but do the iPhone photos show up in a local Google Drive folder on your machine? If so, you can just right-click the folder name within Lightroom and “Synchronize Folder”. —Jeffrey

— comment by Anup Raje on February 19th, 2017 at 3:54pm JST (9 months, 24 days ago) comment permalink

Google Photos can automatically display photos added to Google Drive (must be enabled under Google Photos settings). This partially can work as a workaround for the PicasaWeb plugin.
As far as i have found out it does not support adding photos to collections and updating or deleting photos (updated photos seem to appear twice in Google Photos, and deleted photos are removed from Google Drive, but seem to remain in Google Photos).

There is also a setting in Google Drive to map photos, that have been directly added to Google Photos under a ‘Google Photos’ Folder in Google Drive.

— comment by Wilhelm Medetz on March 4th, 2017 at 1:31am JST (9 months, 12 days ago) comment permalink

Hi Jeffrey, I want to export photos to Google Drive in a folder hierarchy. Is this possible? I was trying to but did not seem to get it working.
I am using Lightroom CC.
Very happy with your export plugins to export to iPad and PhotoManager Pro!

Kind regards
Owen Holmstrom

The easiest way to do that is to use my Folder Publisher plugin, targeting a Google Drive folder on your machine. —Jeffrey

— comment by Owen on April 2nd, 2017 at 4:57am JST (8 months, 14 days ago) comment permalink
Leave a comment...


All comments are invisible to others until Jeffrey approves them.

Please mention what part of the world you're writing from, if you don't mind. It's always interesting to see where people are visiting from.


You can use basic HTML; be sure to close tags properly.

Subscribe without commenting