A man and his 5-year-old niece spotted the bag near the Embarcadero and Folsom Street washed up on the rocks.
"And all these people are walking by and my niece is the one; she said, 'Look a maleta,'" witness Margarito Real said.
The a maleta, which means suitcase in Spanish, washed up on the rocks around 8:45 a.m. Real told some nearby firefighters who helped pull the suitcase further up onto the rocks where they made the gruesome discovery.
Police say the body of a woman in her 30s appeared to have been in there for less than two days. There was no obvious cause of death.
"It would be part of the investigation based on the tides, the level of the water, how far a suitcase of that size and weight could have traveled," SFPD spokesperson Lt. Lyn Tomioko said.
Police asked the Coast Guard to assist them, using a computer program that locates lost vessels using recent tide, wind and current information the models show where 300 virtual corks will drift. They ran the program backwards to find the suitcase's point of origin.
And when the Coast Guard reversed that process, all 300 virtual corks swirled around in the same general location, where the suitcase was found.
Investigators have not said if the computer program helped. They are also combing missing persons reports.
An autopsy is scheduled for Wednesday.