Blog Post

It’s All Greek To Me: 15 Lorem Ipsum Resources

Lorem IpsumWeb designers, font purveyors, professional paginators and even application developers need sample data to test their layouts, creations and algorithms. “Lorem ipsum” has been the de-facto standard when placing non-distracting text into test areas and has been shown to exhibit characteristics of standard lettter, word and space distribution. While one could just keep a copy of a few paragraphs of Cicero’s De finibus bonorum et malorum text around, there are many tools for your Mac (and on the Net) that make this task even easier.

Ipsum Everywhere!

If Rosborough Technology’s lipServiceX (1.2) didn’t exist, someone would have built it. As an OS X Services menu item, it gives you quick and (almost) ubiquitous access to “lorem ipsum” no matter what application your using. A key combination makes this the quickest way to get some ipsum into your project.

Dashboard Widgets

While there isn’t exactly a plethora of widgets, the following ones cover all the ipsum bases:


  • TextMate has a built-in generator invoked via tab completion of the magic word.


Online “lorem ipsum” generators

While not exactly a comprehensive list, these sites get the job done:

For the “do it yourself” folks

Finally, this Joel on Software forum discussion is a great primer on the efficacy of even using standard “lorem ipsum” with some creative suggestions on alternatives. I’d be very interested in what tips and tools other TAB readers use to “get their ipsum on”, so drop a note in the comments!

15 Responses to “It’s All Greek To Me: 15 Lorem Ipsum Resources”

  1. Apple Laptop Battery

    While there isn’t exactly a plethora of widgets, the following ones cover all the ipsum bases:

    Dolor Sit Amet (small & quick)
    Cicero (gets the job done)
    Lorem Ipsum Widget (fancy)
    Corporate Ipsum – a humorous alternative to “lorem ipsum” (though it generates readable text, so it may distract proofers).

  2. i use Quicksilver, so i have a 4-paragarph long text file saved as “lorem.txt”, and so to insert it, I

    1) Quicksilver hot key (in my case, the apple key)
    2) type “lor”
    3) tab
    4) type “paste”
    5) enter

  3. The very best such generator ever made was MacTravesty. I can’t provide a link, as the application was written for Classic, before OS X, and the developer (from discussion) doesn’t foresee it ever being updated. There may still be copies floating around out there.

    This is unfortunate, as MacTravesty was actually a faux-language generator. It would take a corpus of text, of your choosing, analyse it for proximity of letters to other letters, build an internal table of those likelihoods, and then generate texts which followed those hidden rules.

    This meant that you could provide it with a body of Swahili, and it would spit out text in which “e” occurred next to “a” in situations that the designers might never have thought of, simply based on the frequency with with which this happened in the original text.

    It also meant that you could use it to construct vast corpuses of your own fictitious language, feeding its own results back into itself, selecting out the words that ‘looked’ most like what you sought and feeding them back in again. All of it following deep and unseen rules of character proximity that gave the result an amazing verisimilitude.

    It was amazing. I truly hope that either the designer recreates it for OS X someday, or that some ambitious programmer finds a way to try it out and builds something similar.

    vehtretan traeshei kile mein, amahm numahm anth nali anthiatle, itha khu thua an sonam oveta andraes hethu.

    • Well, i did really like it to. Here’s code for Haskell that does the same thing (might do an GUI later on…)

      import Data.List
      import System.Random

      — This function returns all possible found substrings from the ‘string’ which
      — has a length within the given range ‘(minL,maxL)’.
      allFreqCombos :: (Int,Int) -> String -> [(Int,String)]
      allFreqCombos (minL,maxL) s | maxL String -> [(Int, String)]
      oneFreqCombo thisL ss = zip (map length groups) (map head groups)
      where groups = group (sort (oneFreqHelper thisL ss))

      oneFreqHelper :: Int -> String -> [String]
      oneFreqHelper thisL s | length s Int -> (Int,Int) -> String -> String
      travesty 0 _ _ _ = “”
      travesty len seed range str = rndStr ++ travesty (len-1) (seed+1) range str
      where rndStr = getFreq selectFrom analyzis
      selectFrom = i2d (sum (map fst analyzis)) * (rnd0to1 seed)
      analyzis = allFreqCombos range str

      rnd0to1 :: Int -> Double
      rnd0to1 seed = fst (random (mkStdGen seed))

      getFreq :: Double -> [(Int,String)] -> String
      getFreq _ [] = []
      getFreq _ (x:[]) = snd x
      getFreq ack (x:xs) | d2i ack Double
      i2d pix = fromIntegral pix

      d2i :: Double -> Int
      d2i x = round x